2011-04-04 12 views
5

में माउस का स्थान कैसे ढूंढें मैं एक छवि संपादक बना रहा हूं (केवल एक प्रोग्राम के लिए एक साधारण संपादक जो मैं बना रहा हूं), और मुझे माउस की स्थिति ढूंढनी होगी। क्या उद्देश्य-सी में ऐसा करना संभव है? यदि हां, तो कैसे?उद्देश्य-सी

संपादित करें: मैंने सोचा कि मुझे यह उल्लेख करना चाहिए कि मैंने इस पर कुछ शोध किया है और मुझे कुछ भी नहीं मिला है जो मुझे काम करता है। मेरे हेडर फ़ाइल में मेरे पास कोड निम्नानुसार है:

#import <Cocoa/Cocoa.h> 


@interface test : NSWindow <NSWindowDelegate> { 

} 

@end 

मैं आवश्यक आउटलेट और क्रियाओं को संभाल सकता हूं; मुझे सिर्फ यह जानने की जरूरत है कि माउस की स्थिति कैसे प्राप्त करें।

उत्तर

5

आप एक घटना के माध्यम से पकड़ने जाता है, इस तरह के रूप mouseDown है, यह इस तरह दिखेगा

[NSEvent mouseLocation]; 

संपादित करें: (क्षमा करें, मैं NSPoint * लिखा था, जो गलत है, क्योंकि यह एक struct)

+0

डीबगर कहता है कि "प्रारंभ में असंगत प्रकार" या "असाइनमेंट्स इन असाइनमेंट" कहता है यदि मैं लाइनों को अलग करता हूं (इसलिए मैं प्रारंभ करना, फिर सेट करना, प्रारंभ करने के दौरान सेटिंग करना)। – Justin

+0

ओह, मैं गलती से एनएसपीओटी * में डाल दिया। अद्यतन कोड के साथ फिर से प्रयास करें। –

+0

अब यह "अवैध प्रारंभकर्ता" कहता है। यह थोड़ी उलझन में है। संपादित करें: यह अब (किसी भी तरह) काम करता है, लेकिन जब मैं माउस पर क्लिक करता हूं तो यह नीले रंग में (gbd) दिखाता है और एप्लिकेशन काम करना बंद कर देता है। – Justin

5

एक माउस ईवेंट हैंडलर (mouseDown:, mouseUp:, mouseMoved:, आदि) के अंदर, आप अपने locationInWindow के लिए घटना पूछ सकते हैं। यदि आपको कुछ मनमाना समय पर माउस स्थान की आवश्यकता है (आमतौर पर आप ऐसा नहीं करना चाहेंगे, क्योंकि प्रोग्राम के लिए दुर्लभ है कि माउस स्थान को खोजने की आवश्यकता है), तो आप [NSEvent mouseLocation] कर सकते हैं और यह वापस आ जाएगा स्क्रीन समन्वय में उस समय माउस का स्थान। अन्यथा

- (void)mouseDown:(NSEvent *)theEvent { 
    NSPoint mouseDownPos = [theEvent locationInWindow]; 
} 

, उपयोग:

2

है आप को देखने के ही मूल से निर्देशांक चाहते हैं, उपयोग:

NSPoint locationInView = [self convertPoint:[theEvent locationInWindow] fromView:nil]; 

आप एनएसवी व्यू निर्देशांक में सीधे आकर्षित करने के लिए इस एनएसपीओइंट का उपयोग कर सकते हैं; अन्यथा

[theEvent locationInWindow] 

आपके पास खिड़की में माउस के निर्देशांक होंगे, जो शायद आप नहीं चाहते हैं।

+0

धन्यवाद इसने बहुत मदद की। यहां किसी के लिए स्विफ्ट 3 सिंटैक्स है: 'locationInView = self.convert (event.locationInWindow, से: nil) ' –