2009-05-02 7 views
34

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

बस जब मैं ऐप खोलता हूं, तो स्पष्ट करने के लिए, विंडो स्वचालित रूप से खुलती है, लेकिन जब मैं विंडो के लिए क्रॉस पर क्लिक करता हूं लेकिन ऐप चल रहा हूं, तो जब मैं डॉक आइकन पर क्लिक करता हूं तो विंडो नहीं खुलती है।

+1

यह स्वचालित रूप से होता है। क्या आप अधिक विशिष्ट हो सकते हैं? –

उत्तर

64

लागू अपने अनुप्रयोग प्रतिनिधि में - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag। वापसी मूल्य के विवरण के लिए दस्तावेज़ीकरण की जांच करें।

दस्तावेज़ आधारित ऐप्स और गैर दस्तावेज़ आधारित ऐप्स थोड़ा अलग व्यवहार करते हैं। यदि कोई खुली खिड़कियां नहीं हैं जब दस्तावेज़ आधारित ऐप के डॉक आइकन पर क्लिक किया जाता है तो यह एक नया दस्तावेज़ तैयार करेगा। यदि कोई खुली खिड़कियां नहीं हैं जब गैर-दस्तावेज़ आधारित ऐप के डॉक आइकन पर क्लिक किया जाता है तो यह कुछ भी नहीं करेगा।

+0

बहुत बहुत धन्यवाद! – Joshua

+0

मामले के बारे में जब मेरे पास दो खुली खिड़कियां हैं, मुख्य खिड़की और बाल खिड़की। बच्चे की खिड़की पर ध्यान केंद्रित किया गया है। मुझे डॉक आइकन पर क्लिक करने के बाद केंद्रित मुख्य विंडो सेट करने की आवश्यकता है। – BUDDAx2

5

ऐप सक्रिय होने पर एक दस्तावेज़ आधारित एप्लिकेशन स्वचालित रूप से एक नया शीर्षक रहित दस्तावेज़ खुल जाएगा, इसलिए मुझे लगता है कि आप एक गैर-दस्तावेज़ आधारित ऐप का जिक्र कर रहे हैं।

अपने आवेदन प्रतिनिधि में applicationDidBecomeActive: विधि लागू करें और विंडो खोलें/दिखाएं।

संपादित करें:

Delegates पर कुछ जानकारी।

Opening and Closing Windows पर कुछ जानकारी और NSWindow एपीआई

+0

मुझे समझ में नहीं आता कि मैं एप्लिकेशन को कैसे कार्यान्वित कर सकता हूं DidBecomeActive: विधि। क्या आप मुझे एक कोड फिसल सकते हैं/उदाहरण/ – Joshua

+0

आईबी में लोड पर छिपाने के लिए चेकबॉक्स कहां है? – Joshua

+0

@ जोशुआ - मुझे खेद है, यह बिल्कुल विपरीत है। यदि आप निब फ़ाइल में विंडो के लिए इंस्पेक्टर का चयन करते हैं, तो सुनिश्चित करें कि "लॉन्च पर दृश्यमान" चेक किया गया है। –

9

यह एक गैर-दस्तावेज़ आधारित ऐप की मुख्य विंडो को बंद होने के बाद स्क्रीन पर वापस लाने के लिए मैं यही कर रहा हूं। मुझे पता है कि यह करने का सही तरीका नहीं हो सकता है लेकिन यह अब तक मेरे लिए काम कर रहा है।

ऐपडिलेगेट पर इसे कार्यान्वित किया गया, विंडो को उसी ऑब्जेक्ट के आवृत्ति चर के रूप में परिभाषित किया गया है।

- (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender 
{ 
    [window makeKeyAndOrderFront:self]; 
    return NO; 
} 

यदि किसी के पास बेहतर समाधान है तो कृपया उत्तर दें। धन्यवाद! स्वीकार किए जाते हैं जवाब फिर से खोल खिड़की अब और माउस घटनाओं के लिए प्रतिक्रिया नहीं की साथ

:

+0

मैं इसे भी समझने की कोशिश कर रहा था (दस्तावेज़ आधारित ऐप के लिए एक और विंडो कैसे प्रदर्शित करें) और यह सही काम करता है! – Kyle

10
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag 
{ 
    if (flag) { 
     return NO; 
    } 
    else 
    { 
     [YourWindow makeKeyAndOrderFront:self];// Window that you want open while click on dock app icon 
     return YES; 
    } 
} 
2

एक समाधान स्वीकार किए जाते हैं जवाब में जोड़ने के लिए।

स्वीकृत उत्तर का उपयोग करते समय आपको आईबी में विंडो के गुण निरीक्षक में "बंद होने पर रिलीज़" अनचेक करना भी सुनिश्चित करना होगा। यह उत्तरदायी खिड़की की समस्या को हल करता है।

1

जैसा कि अन्य ने इंगित किया है, गैर-दस्तावेज़ ऐप्स में बंद विंडो को फिर से खोलने के लिए applicationShouldHandleReopen विधि का उपयोग करना सही तरीका है। एकमात्र परिवर्तन जो मैं जोड़ना चाहता हूं वह यह देखने के लिए एक और अधिक लचीला तरीका है कि NSApplication की दृश्यमान और अदृश्य .windows की सूची और आवश्यक विंडो की जांच करके, किस विंडो को फिर से प्रदर्शित किया जाना चाहिए।

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool { 

    if flag == false { 

     for window in sender.windows { 

      if (window.delegate?.isKind(of: WelcomeWindowController.self)) == true { 
       window.makeKeyAndOrderFront(self) 
      } 
     } 
    } 

    return true 
} 

परिशिष्ट

एक) यदि खिड़की तो छिपा हुआ था यह स्वचालित रूप से उपयोगकर्ता को एप्लिकेशन की डॉक आइकन पर क्लिक करें होगा जब, तो applicationShouldHandleReopen विधि को लागू करने की कोई जरूरत से पता चला की जाएगी।

बी) "बंद होने पर रिलीज" विकल्प उपरोक्त व्यवहार में किसी भी तरह से प्रभावित नहीं होता है।

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