cocoa - NSWindowCollectionBehaviorStationary के साथ NSWindow डैशबोर्ड पर दिखाई देता है। क्या यह एक बग है?




spaces apple-expose (2)

मैं इस व्यवहार को पुन: उत्पन्न करने में सक्षम था और मुझे लगता है कि यह ऐप्पल की तरफ से कुछ दोषपूर्ण एनीमेशन है।

बस इसलिए मैं इसे बेहतर समझा सकता हूं, एक नई परियोजना बना सकता हूं, इन दो लाइनों को applicationDidFinishLaunching: लॉन्चिंग में जोड़ें applicationDidFinishLaunching: और इसे चलाएं।

[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ];
[self.window setHidesOnDeactivate: YES];

(self.window वह विंडो है जो एक नई प्रोजेक्ट बनाते समय स्वचालित रूप से बनाई जाती है। यह वैसे भी वास्तव में कोई फर्क नहीं पड़ता है, जब तक कि यह स्क्रीन पर दिखाई देने वाली खिड़की है)

अब इस व्यवहार को ध्यान दें: जब एक स्थान से बदलते हैं जहां आप अपनी खिड़की को दूसरे में देख सकते हैं जिसमें अन्य ऐप्स से अन्य खिड़कियां हैं (और इसलिए आपकी खिड़की निष्क्रिय हो जाएगी क्योंकि आपका ऐप निष्क्रिय हो जाएगा), आपकी खिड़की केवल गायब हो जाती है एनीमेशन खत्म होता है। तो, क्या हो रहा है?

यहां मुझे लगता है कि ऐसा होता है: एक स्थान से दूसरे स्थान पर स्विच करते समय, सभी रिक्त स्थानों पर दिखाए जाने वाले विंडो केवल एनीमेशन के बाद परिवर्तन पर प्रतिक्रिया करते हैं , इसलिए डैशबोर्ड पर आपकी विंडो की संक्षिप्त उपस्थिति। मुझे लगता है कि आप देखेंगे कि जब स्लाइड एनीमेशन समाप्त होता है तो यह ठीक से गायब हो जाता है।

तो, दुर्भाग्यवश, मुझे नहीं पता कि आपकी समस्या को कैसे ठीक किया जाए। ऐसा लगता है कि ऐसा ही होता है।

मैं अपना NSWindow प्राप्त करने की कोशिश कर रहा हूं:

  1. सभी रिक्त स्थान पर दिखाई दें
  2. डेस्कटॉप दिखाते समय दृश्यमान रहें ( F11 दबाकर)
  3. मिशन नियंत्रण / एक्सपोज़ में दिखाई नहीं दे रहा है

निम्नलिखित ठीक है, लेकिन एक दुष्प्रभाव के साथ:

[self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces
                            | NSWindowCollectionBehaviorStationary ];

मैक ओएस एक्स शेर पर डैशबोर्ड पर स्विच करते समय, खिड़की एक दूसरे के लिए डैशबोर्ड आइटम के साथ अकेले दिखाई देती है, फिर यह छिपी हुई है।

क्या यह अपेक्षित व्यवहार या बग है? मेरे ऐप के उपयोगकर्ता इसे गायब होने से पहले डैशबोर्ड पर विंडो देखने में भ्रमित पाते हैं। मैं उनसे केवल रिक्त स्थान पर दिखाने के लिए उम्मीद करता था, न कि डैशबोर्ड।


मैंने http://cocoadev.com/wiki/DontExposeMe के लिए खोज की

कुछ भी वास्तव में काम करने के अलावा काम किया।

self.window.level = kCGDesktopWindowLevel;

अब शायद उसको बेनकाब करने के लिए परिवर्तन करें और उस पर सेट करें :) ...

देखें कि ओएस एक्स में किसी के प्रोग्राम का अधिग्रहण करने वाले मिशन कंट्रोल या कमांड-टैब स्विचर का पता कैसे लगाया जा सकता है? उसके लिए :) शायद एक जवाब वहाँ आ जाएगा