मैं निम्नलिखित प्रदर्शन करना चाहता हूं:
जब मैं स्टेटस बार आइटम (NSStatusItem
) पर क्लिक करता हूं, तो मैं इसे अनिश्चित काल तक (कोई मेनू) हाइलाइट करना चाहता हूं और जब एप्लिकेशन फोकस खो देता है तो मैं इसे हाइलाइट करना बंद करना चाहता हूं।
क्या ऐसा करने का कोई तरीका है? मैं इसे नहीं ढूंढ सकता, टीबीएच।क्या प्रोग्राम बार आइटम प्रोग्रामेटिक रूप से हाइलाइट करने का कोई तरीका है?
उत्तर
आप शायद इसे कस्टम दृश्य के साथ कर सकते हैं sends the status item a drawStatusBarBackgroundInRect:withHighlight:
message।
मुझे संदेह है कि कस्टम व्यू के बिना ऐसा करने का कोई तरीका है, क्योंकि जैसा कि मैंने प्रश्न पर मेरी टिप्पणी में उल्लेख किया है, जब आइटम पर माउस नीचे नहीं है तो आइटम को हाइलाइट करते हुए खराब दिखता है।
बात यह है: मेरे पास एक NSWindow (कोई पॉपओवर नहीं है) जो स्टेटस बार आइटम के नीचे दिखाई देगा (जब क्लिक किया गया हो)। तो, मैं क्या करना चाहता हूं एनएसएमएनयू व्यवहार की नकल करना: मैं स्टेटस बार पर क्लिक करता हूं, खिड़की दिखायी जाती है और आइटम हाइलाइट किया जाता है, जब ऐप फोकस करता है तो खिड़की गायब हो जाती है और आइटम सामान्य स्थिति में जाता है। –
@ पेड्रोविएरा: उचित लगता है। अगर मैं ऐसा कर रहा था, तो मैं एक कस्टम दृश्य बनाउंगा जैसा कि मैंने अपने उत्तर में वर्णित किया था। –
पेड्रो, मुझे अभी एक ही मुद्दे का सामना करना पड़ रहा है। क्या आप साझा करना चाहते हैं कि आपने पीटर के समाधान को कैसे लागू किया है? चीयर्स। –
पुराना सवाल, लेकिन मुझे लगता है कि यह वैकल्पिक उत्तर जोड़ने के लायक है।
यह स्वचालित रूप से unhighlight नहीं जब आवेदन ध्यान केंद्रित खो देता है, लेकिन यह आप (के रूप में other answer की आवश्यकता है) एक कस्टम दृश्य का उपयोग किए बिना उजागर करने के लिए अनुमति देता है जाएगा:
NSStatusItem *statusItem = [self getStatusItem];
[statusItem.button setHighlighted:YES];
आप इसे मैन्युअल रूप से का उपयोग कर सकते हैं unhighlight एक ही विधि:
[statusItem.button setHighlighted:NO];
नोट मैं एक ऐसी ही सवाल here से इस सवाल का जवाब मिल गया।
यदि मैंने कोई एप्लिकेशन देखा है, तो मुझे लगता है कि यह लटका हुआ था, या कम से कम मानक घटना लूप का उपयोग नहीं कर रहा था, हाइलाइट और अनहाइट के बीच में। अगर आप यह इंगित करना चाहते हैं कि आपकी विंडो दिखाई दे रही है, तो आपको अपना आइटम आइकन बदलना चाहिए। –