मैं ओएस एक्स के लिए एक एप्लीकेशन पर काम कर रहा हूं जहां मैं एक कस्टम विंडो का उपयोग करता हूं जो शीर्षक बार सहित पृष्ठभूमि के रूप में छवि खींचता है। मैं खिड़की खींचने के लिए this code संशोधित कर रहा हूं, और फिर मानक बंद, न्यूनतम, और अधिकतम बटन प्राप्त करने के लिए [NSWindow मानक WindowButton: forStyleMask:] को कॉल कर रहा हूं।एनएसविंडो बंद करें बटन को ओवरराइड करें
समस्या यह है कि मेरा एप्लिकेशन एनएसपीओपीओवर का उपयोग करता है, और जब मैं पॉपओवर खुला रहता हूं तो एप्लिकेशन को बंद या छोटा करता हूं, तो यह पॉपओवर बंद कर देगा या एप्लिकेशन को बंद करने के बजाय पॉपओवर को कम करने की एनीमेशन दिखाएगा। क्या एनएसविंडो में डिफ़ॉल्ट बंद/न्यूनतम करने के व्यवहार को ओवरराइड करने का कोई तरीका है, इसलिए मैं पहले किसी भी खुले पॉपओवर को खारिज कर सकता हूं?
धन्यवाद, और खेद है कि यह एक स्पष्ट सवाल है - यह मेरा पहला समय ओएस एक्स एसडीके के साथ काम कर रहा है, इसलिए मेरे पास बहुत अनुभव नहीं है।
संपादित करें: कुछ घंटे के बाद मैं इस पोस्ट मैंने सोचा कि मैं एक स्पष्ट समाधान था - NSWindowDelegate तरीकों "windowWillClose:" का उपयोग करें और "windowWillMiniaturize:" और वहाँ R आर खारिज। हालांकि, ऐसा लगता है कि चूंकि बंद/न्यूनतम बटन पॉपओवर बंद कर रहे हैं, कि यदि कोई पॉपओवर खुला है, तो इन प्रतिनिधि विधियों को नहीं कहा जाएगा। यह मुझे चरण 1 पर वापस ले जाता है, लेकिन उम्मीद है कि व्यवहार को जानने से किसी को समस्या का पता लगाने में मदद मिलेगी।
एनएसपीओपीओवर के साथ एक और समस्या भी है और मुझे नहीं पता कि यह जुड़ा हुआ है या नहीं, इसलिए मैंने सोचा कि अगर मैं एक आम कारण था तो मैं इसे यहां जोड़ दूंगा। कभी-कभी, जब मैं पॉपओवर को खारिज करने का प्रयास करता हूं, तो मुझे यह त्रुटि मिल जाएगी (संदर्भ के लिए, मैं एक एनएसबटन दबा रहा हूं जो पॉपओवर के अस्तित्व की जांच करने वाले फ़ंक्शन को कॉल करता है, और यदि यह मौजूद है, तो इसे बंद कर देता है):
2011-08-30 11:24:08.949 Playground[11194:707] *** Assertion failure in +[NSView _findFirstKeyViewInDirection:forKeyLoopGroupingView:], /SourceCache/AppKit/AppKit-1138/AppKit.subproj/NSView.m:11026
2011-08-30 11:24:08.950 Playground[11194:707] this method is supposed to only be invoked on top level items
2011-08-30 11:24:08.958 Playground[11194:707] (
0 CoreFoundation 0x00007fff873d4986 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff87ac6d5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff873d47ba +[NSException raise:format:arguments:] + 106
3 Foundation 0x00007fff8950314f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169
4 AppKit 0x00007fff88211064 +[NSView _findFirstKeyViewInDirection:forKeyLoopGroupingView:] + 137
5 AppKit 0x00007fff87d1f546 _replacementKeyViewAlongKeyViewPath + 565
6 AppKit 0x00007fff87d1f2ff -[NSView nextValidKeyView] + 179
7 AppKit 0x00007fff87d1f199 -[NSWindow _selectFirstKeyView] + 714
8 AppKit 0x00007fff882361cf _NSWindowRecursiveFindFirstResponder + 164
9 AppKit 0x00007fff882395c8 _NSWindowExchange + 79
10 AppKit 0x00007fff883a7e3a -[_NSWindowTransformAnimation startAnimation] + 426
11 AppKit 0x00007fff87c98bb2 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 592
12 AppKit 0x00007fff87c9890f -[NSWindow orderWindow:relativeTo:] + 154
13 AppKit 0x00007fff883dfaf0 _NSPopoverCloseAndAnimate + 948
14 Playground 0x00000001000078a4 -[MainWindowController dismissPopover:] + 100
15 Playgorund 0x0000000100007012 -[MainWindowController requestWasClicked:] + 98
16 CoreFoundation 0x00007fff873c411d -[NSObject performSelector:withObject:] + 61
17 AppKit 0x00007fff87ca2852 -[NSApplication sendAction:to:from:] + 139
18 AppKit 0x00007fff87ca2784 -[NSControl sendAction:to:] + 88
19 AppKit 0x00007fff87ca26af -[NSCell _sendActionFrom:] + 137
20 AppKit 0x00007fff87ca1b7a -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2014
21 AppKit 0x00007fff87d2157c -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 489
22 AppKit 0x00007fff87ca0786 -[NSControl mouseDown:] + 786
23 AppKit 0x00007fff87c6b66e -[NSWindow sendEvent:] + 6280
24 AppKit 0x00007fff87c03f19 -[NSApplication sendEvent:] + 5665
25 AppKit 0x00007fff87b9a42b -[NSApplication run] + 548
26 AppKit 0x00007fff87e1852a NSApplicationMain + 867
27 Playground 0x0000000100001c52 main + 34
28 Playground 0x0000000100001c24 start + 52
29 ??? 0x0000000000000001 0x0 + 1
)
लेकिन ... स्टैक ट्रेस के बारे में क्या ?! मुझे जानने की जरूरत है। –
@ बिग-ओक्लायर दुर्भाग्य से, यह प्रश्न 6 साल के करीब हो रहा है और मुझे वास्तव में अब स्रोत कोड तक पहुंच नहीं है, इसलिए मैं आपकी सहायता नहीं कर सकता। माफ़ कीजिये! – Aaron