2010-03-22 25 views
13

如何將Info.plist中指定類型的文件拖放到Dock圖標上,然後使用文件的完整路徑調用方法?將文件拖放到可可中的Dock圖標上

+0

我不明白的問題。用戶是否將文件拖動到Dock圖標上,還是想以編程方式打開文件? – 2010-03-22 04:25:42

+0

我的意思是實際獲得放置在停靠欄圖標上的文件的路徑。 – 2010-03-22 04:43:28

回答

15

如果您已經設置了您的Info.plist的CFBundleDocumentTypes陣列正確(或「LSItemContentTypes」或「CFBundleTypeExtensions」),那麼你只需要設立的NSApplication代表和實現委託方法,application:openFile:

如果您希望立即刪除多個文件,請執行application:openFiles:

對於承諾的文件(NSFilesPromisePboardType/kPasteboardTypeFileURLPromise)請參閱Dropping promised files on to application icon in Dock

+0

我已經正確設置了我的CFBundleDocumentTypes數組,並編寫了該方法,但停靠欄圖標不會接受我的文件。 – 2010-03-22 14:03:39

+0

Tristian Seifert:這個問題的一個可能原因是你在你的plist中指定了一個UTI,但它是錯誤的:http:// boredzo。org/blog/archives/2007-07-23/how-to-make-your-apps-dock-tile-highlight你也應該確保導入你在plist中提到的任何UTI:http://developer.apple。 com/mac/library/documentation/FileManagement/Conceptual/understanding_utis/ – 2010-03-22 14:32:09

+0

閱讀這兩個文檔後,我仍然不太明白如何將UTI添加到現有的PList中。這裏是我的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 我將不得不添加到這個定義,以便碼頭將接受該文件? – 2010-03-22 22:26:24

0

如果您實際製作基於文檔的應用程序,將其設置爲給您的路徑將使您做更多的工作,而不是您需要的。只需使用基於文檔的應用程序模板即可。文檔控制器將爲您創建合適的類的實例;你只需要寫這個類。

您以這種方式創建的應用程序將免費處理文件丟失(通過打開它們作爲文檔)。

+0

這不是一個基於文檔的應用程序,它是一個電子郵件閱讀器,我希望能夠將草稿,郵箱等拖到我的停靠欄圖標上。 – 2010-03-22 14:02:44

1

在側窗格的目標組中選擇您的應用程序並使用get info。然後在新窗口中選擇屬性選項卡以添加新的文檔類型。將它命名爲「文件夾」以方便操作系統類型需要「摺疊」;商店類型和角色您可以保留原樣。

+0

謝謝它幫助我使我的應用程序工作。 – AmitSri 2011-02-11 10:25:52

5

在當前系統上,您可以使用UTI而不是舊式的四字符類型(例如上面的fold)。在Xcode的文檔類型的編輯器,使一個新的類型有:

  • 名稱:文件夾
  • 標識符:public.folder

public.folderpublic.directory一個亞型。 public.folder與向用戶顯示的目錄匹配,即不包裝如.app包裝。

8

下面是Xcode的5 更新的解決方案在AppDelegate.m

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

及根據項目>目標的Xcode設置文檔類型>信息:在Info.plist中 Project > Info > Document Types

檢查設置如果您有一個空的'文檔內容類型UTI'數組,應該正確填寫或刪除。 Delete empty Document Content Type UTIs array from Info.plist

你的Info.plist應該是這個樣子: Document Types Info.plist

+0

很好的答案!很有幫助。謝謝 – gypsyDev 2014-08-09 11:45:09

+0

請注意,這將使您的應用程序接受任何*文件,而不僅僅是給定的擴展名,因爲CFBundleTypeExtensions設置爲'*'。如果您只支持某些文件擴展名,請在其中指定它們。否則,操作系統將提供打開隨機文件與您的應用程序只是爲了您的應用程序失敗。 – uliwitness 2017-05-25 10:57:44

相關問題