2010-03-22 11 views
13

मैं अपने डॉक आइकन पर Info.plist में निर्दिष्ट एक प्रकार के फ़ाइल (या इसे खोजक में खोलने के लिए चयन) कैसे छोड़ सकता हूं और फिर फ़ाइल के पूर्ण पथ के साथ एक विधि को कॉल कर सकता हूं ?कोको में डॉक आइकन पर फ़ाइलों को छोड़ना

+0

मैं सवाल समझ में नहीं आता। क्या उपयोगकर्ता आपके डॉक आइकन पर फ़ाइल खींच रहा है, या आप प्रोग्राम को प्रोग्रामेटिक रूप से खोलना चाहते हैं? –

+0

मेरा मतलब है कि वास्तव में उस फ़ाइल के पथ को प्राप्त करना है जो डॉक आइकन पर गिरा दिया गया था। –

उत्तर

15

आप ठीक ढंग से अपने Info.plist के CFBundleDocumentTypes सरणी दर्ज कर चुके हैं (या तो 'LSItemContentTypes' या 'CFBundleTypeExtensions'), तो आप सिर्फ एक NSApplication प्रतिनिधि की स्थापना की और प्रतिनिधि विधि लागू, application:openFile: की जरूरत है।

यदि आप एक से अधिक फ़ाइलों को एक बार में गिराए जाने की उम्मीद कर रहे हैं, तो application:openFiles: लागू करें।

वादा किए गए फ़ाइलों के लिए (NSFilesPromisePboardType/kPasteboardTypeFileURLPromise) Dropping promised files on to application icon in Dock देखें।

+0

मैंने अपना CFBundleDocumentTypes सरणी ठीक से स्थापित किया है, और विधि लिखा है, लेकिन डॉक आइकन बस मेरी फ़ाइल स्वीकार नहीं करेगा। –

+0

ट्रिस्टियन सीफर्ट: उस समस्या का एक संभावित कारण यह है कि आपने अपनी plist में एक यूटीआई निर्दिष्ट किया है, लेकिन यह गलत था: http: // boredzo।संगठन/ब्लॉग/अभिलेखागार/2007-07-23/कैसे-टू-मेक-अप-ऐप-डॉक-टाइल-हाइलाइट आपको प्लेस्ट में उल्लेख किए गए किसी भी यूटीआई को आयात करना भी सुनिश्चित करना चाहिए: http://developer.apple। कॉम/मैक/लाइब्रेरी/प्रलेखन/फ़ाइल प्रबंधन/अवधारणात्मक/समझ_यूटिस/ –

+0

इन दो दस्तावेजों को पढ़ने के बाद, मुझे अभी भी समझ में नहीं आता कि मेरे मौजूदा प्लिस्ट में यूटीआई कैसे जोड़ना है। यहाँ मेरी Info.plist के एक छोटे खंड है: \t \t \t \t \t CFBundleTypeIconFile \t \t \t Draft.icns \t \t \t CFBundleTypeExtensions \t \t \t \t \t \t \t podraft \t \t \t \t \t \t CFBundleTypeName \t \t \t डाकघर ड्राफ्ट \t \t क्या मैं इस परिभाषा में जोड़ने के लिए तो गोदी फ़ाइल को स्वीकार करेंगे पड़ेगा? –

0

यदि आप वास्तव में एक दस्तावेज़-आधारित ऐप बना रहे हैं, तो इसे पथ देने के लिए इसे स्थापित करने से आपको अधिक काम करना होगा। बस दस्तावेज़-आधारित अनुप्रयोग टेम्पलेट का उपयोग करें। दस्तावेज़ नियंत्रक आपके लिए सही कक्षा का एक उदाहरण तैयार करेगा; आपको केवल उस वर्ग को लिखना होगा।

एक ऐसा एप्लिकेशन जो आप इस तरह से बनाते हैं, वह फाइल बूंदों (दस्तावेजों के रूप में खोलकर) को संभाल लेगा।

+0

यह एक दस्तावेज़ आधारित ऐप नहीं है, यह एक ईमेल रीडर है, और मैं अपने डॉक आइकन पर ड्राफ्ट, मेलबॉक्स इत्यादि खींचने में सक्षम होना चाहता हूं। –

1

साइड फलक के लक्षित समूह में अपना एप्लिकेशन चुनें और जानकारी प्राप्त करें। फिर नई विंडो में एक नया दस्तावेज़ प्रकार जोड़ने के लिए गुण टैब का चयन करें। सुविधा के लिए इसे "फ़ोल्डर" नाम दें और ओएस प्रकारों को "गुना" होना चाहिए; स्टोर प्रकार और भूमिका जिसे आप छोड़ सकते हैं।

+0

धन्यवाद यह मेरी ऐप को काम करने में मदद करता है। – AmitSri

5

वर्तमान सिस्टम पर आप पुराने शैली के चार-चार प्रकारों (जैसे fold ऊपर) के बजाय UTI का उपयोग कर सकते हैं।

  • का नाम:: फ़ोल्डर
  • पहचानकर्ता: public.folder

public.folderpublic.directory की एक उप-प्रकार है Xcode के दस्तावेज़ प्रकार संपादक में, के साथ एक नए प्रकार के हैं। public.folder मैचों की निर्देशिका जो उपयोगकर्ता के रूप में दिखाई देती है, यानी .app रैपर जैसे पैकेज नहीं। में Info.plist में Project > Info > Document Types

चेक सेटिंग्स:

8

यहाँ Xcode 5. के लिए एक अद्यतन समाधान AppDelegate.m

-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename 
{ 
    NSLog(@"%@", filename); 
    return YES; 
} 

में और परियोजना> लक्ष्य के तहत Xcode सेटअप दस्तावेज़ प्रकार में> जानकारी है यदि आपके पास खाली 'दस्तावेज़ सामग्री प्रकार यूटीआई' सरणी है जो ठीक से भर दी जानी चाहिए या अन्यथा हटा दी जानी चाहिए। Delete empty Document Content Type UTIs array from Info.plist

आपका Info.plist कुछ इस तरह दिखना चाहिए: Document Types Info.plist

+0

महान जवाब! बहुत उपयोगी। धन्यवाद – gypsyDev

+0

ध्यान दें कि यह आपके आवेदन को * किसी भी * फ़ाइल को स्वीकार करेगा, केवल एक दिया गया एक्सटेंशन नहीं, क्योंकि CFBundleTypeExtensions '*' पर सेट है। यदि आप केवल कुछ फ़ाइल एक्सटेंशन का समर्थन करते हैं, तो उन्हें वहां निर्दिष्ट करें। अन्यथा ओएस आपके ऐप के असफल होने के लिए आपके एप्लिकेशन के साथ यादृच्छिक फाइलें खोलने की पेशकश करेगा। – uliwitness

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