2013-02-25 57 views
8

मुझे एनएसएमएनयू के साथ यहां एक बहुत ही अजीब समस्या है।NSMenuItem, कस्टम व्यू और माउसअप के साथ अजीब समस्या:

मेरे द्वारा उपयोग किए जाने वाले लगभग एनएसएमएनयूआईटम्स का उपयोग दृश्य दृश्य के माध्यम से उन पर कस्टम दृश्य है: एनएसएमएनयूइटम पर विधि। इस कस्टम दृश्य में मैंने माउसअप लागू किया है: जब उपयोगकर्ता मेनू आइटम पर क्लिक करता है तो पकड़ने के लिए, और यह पहली बार मेनू खोलने पर पूरी तरह से काम करता है।

दूसरी बार हालांकि, क्लिक करने पर माउस स्थिर होने पर माउसअप को इनमें से किसी भी मेनू आइटम पर कॉल नहीं किया जाता है। हालांकि, अगर मैं नीचे क्लिक करता हूं, तो कर्सर को इतनी थोड़ी सी ले जाएं, और माउसअप को छोड़ दें। इसलिए किसी कारण से कुछ इन घटनाओं को रोक रहा है, लेकिन मेनू आने पर दूसरी बार, और माउस कर्उन ईवेंट के बाद कर्सर चलता है तो यह हो जाता है। (कुछ कारणों से माउसडाउन को मेनू के पहले या दूसरी उपस्थिति पर हालांकि कभी नहीं कहा जाता है)।

किसी को भी कोई संकेत मिलता है कि यहां क्या हो रहा है? मेरे माउस इवेंट्स को अवरुद्ध कर रहा है, और वे मेन्यू की पहली उपस्थिति पर मेरे कस्टम व्यू के माध्यम से क्यों गुजर रहे हैं, लेकिन दूसरे पर नहीं?

+0

भी हो जाता है के माध्यम से अगर मैं डबल क्लिक करें (मेनू आइटम के अंदर का उपयोग कर I'n NSView उपवर्ग के लिए इस विधि फिक्स्ड समस्या जोड़ना मेनू की दूसरी उपस्थिति पर माउसअप को दो बार बुलाया जाता है)। –

+0

तो मुझे इस दृश्य के शीर्ष पर NSTextViews करना है। वे माउसडाउन प्राप्त कर रहे हैं, लेकिन वे एक ही समय में उनके पर्यवेक्षण के रूप में विफल होने लगते हैं। ऐसा लगता है कि माउस घटनाओं को अवरुद्ध करने वाले एनएसएमएनयू के शीर्ष पर कुछ ऐसा है। –

उत्तर

3

मुझे एक ही समस्या थी। समस्या को हल करता है कि मैं पहले मेनू क्लिक के बाद बाहरी एप्लिकेशन लॉन्च कर रहा था, और जब मेनू फिर से खोला गया था तो इसकी विंडो अब कुंजी नहीं थी।

- (void)viewWillMoveToWindow:(NSWindow *)newWindow; 
{ 
    [super viewWillMoveToWindow:newWindow]; 

    if (newWindow != nil && ![newWindow isKeyWindow]) 
     [newWindow becomeKeyWindow]; 

    [self updateTrackingAreas]; 
} 

अधिक संदर्भ के लिए, भी इस लिंक पर एक नज़र: http://openradar.appspot.com/7128269