2012-12-31 9 views
7

मैं एक कस्टम NSWindow वर्ग निम्न विधियों है कि राशि खो देता है:NSWindow किसी भी सूचना प्राप्त नहीं हो रही है जब यह ध्यान केंद्रित

- (void)setupWindowForEvents{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignMainNotification object:self]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:self]; 
} 

-(void)windowDidResignKey:(NSNotification *)note { 
    NSLog(@"notification"); 
    [self close]; 
} 

मैं [_window setupWindowForEvents]; फोन लेकिन windowDidResignKey कभी नहीं कहा जाता हो जाता है।
यह कैसे मैं अपने NSWindow कहते हैं: जब स्थिति पट्टी आइटम क्लिक किया जाता है मैं makeKeyAndOrderFront और खिड़की इस तरह, सही स्थिति पट्टी आइटम के नीचे प्रदर्शित होता है: enter image description here

कोई भी विचार कारण है कि मैं किसी भी सूचना नहीं मिलता है जब खिड़की फोकस खो देता है? मैंने यह देखने के लिए NSWindowDidResignMainNotification और NSWindowDidResignKeyNotification दोनों का उपयोग किया है, लेकिन इनमें से कोई भी काम नहीं कर रहा है।

उत्तर

9

आपको शायद अधिसूचना नहीं मिल रही है क्योंकि आप वास्तव में पहले स्थान पर कभी भी महत्वपूर्ण नहीं हैं। आपकी खिड़की सीमाहीन दिखाई देती है, और सीमाहीन खिड़कियां डिफ़ॉल्ट रूप से कुंजी विंडो स्थिति नहीं लेती हैं।

अपने विंडो उपवर्ग में, निम्न विधियों पर हाँ वापस जाने के लिए सुनिश्चित हो:

- (BOOL)canBecomeKeyWindow { 
    return YES; 
} 

- (BOOL)canBecomeMainWindow { 
    return YES; 
} 
+0

आप बहुत बहुत धन्यवाद, पूरी तरह से उस के बारे में भूल गया था। बीटीडब्ल्यू, क्या आप मुझे 'NSWindowDidResignMainNotification' और 'NSWindowDidResignKeyNotification' अधिसूचनाओं के बीच अंतर बता सकते हैं? –

+4

अच्छा सवाल। मुख्य विंडो वे हैं जिनके पास वर्तमान में पहली प्रतिक्रियाकर्ता स्थिति है और उपयोगकर्ता इनपुट का जवाब है। मुख्य खिड़कियां सिर्फ प्रमुख खिड़कियों की तरह हैं, सिवाय इसके कि उन्हें जरूरी नहीं कि पहले उत्तरदाता की स्थिति हो। दोनों राज्य केंद्रित दिखाई देते हैं। यह आपके लिए उपयोग किया जा सकता है: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/WinPanel/Concepts/ChangingMainKeyWindow.html –

संबंधित मुद्दे