Làm cách nào để thả tệp (hoặc chọn mở tệp trong Trình tìm kiếm) của loại được chỉ định trong Info.plist vào biểu tượng đế của tôi rồi gọi phương thức có đường dẫn đầy đủ của tệp ?Thả tệp vào biểu tượng Dock trong Cocoa
Trả lời
Nếu bạn đã thiết lập đúng mảng CFBundleDocumentTypes của Info.plist (hoặc 'LSItemContentTypes' hoặc 'CFBundleTypeExtensions'), thì bạn chỉ cần thiết lập ủy quyền NSApplication và triển khai phương thức ủy nhiệm, application:openFile:.
Nếu bạn đang mong đợi nhiều tệp bị xóa cùng một lúc, hãy triển khai application:openFiles:.
Đối với các tệp đã hứa (NSFilesPromisePboardType
/kPasteboardTypeFileURLPromise
) xem Dropping promised files on to application icon in Dock.
Tôi đã thiết lập đúng mảng CFBundleDocumentTypes của mình và đã viết phương thức, nhưng biểu tượng dock sẽ không chấp nhận tệp của tôi. –
Tristian Seifert: Một nguyên nhân có thể có của vấn đề đó là bạn đã chỉ định một UTI trong plist của bạn, nhưng đó là một sai lầm: http: // boredzo.org/blog/archives/2007-07-23/cách làm cho ứng dụng của bạn-dock-tile-highlight Bạn cũng nên đảm bảo nhập bất kỳ UTI nào bạn đề cập trong plist: http://developer.apple. com/mac/library/documentation/FileManagement/Conceptual/knowledge_utis/ –
Sau khi đọc hai tài liệu này, tôi vẫn chưa hiểu cách thêm UTI vào PList hiện tại của mình. Đây là một phần nhỏ của Info.plist của tôi: \t \t
Nếu bạn đang thực sự tạo một ứng dụng dựa trên tài liệu, hãy thiết lập ứng dụng để cung cấp cho bạn đường dẫn sẽ giúp bạn làm việc hiệu quả hơn bạn cần. Chỉ cần sử dụng mẫu ứng dụng dựa trên tài liệu. Bộ điều khiển tài liệu sẽ tạo một thể hiện của lớp phù hợp cho bạn; bạn chỉ cần viết lớp đó.
Ứng dụng mà bạn tạo theo cách này sẽ xử lý các tệp tin thả xuống (bằng cách mở chúng dưới dạng tài liệu) miễn phí.
Nó không phải là một tài liệu dựa trên ứng dụng, Nó là một trình đọc Email, và tôi muốn để có thể kéo dự thảo, hộp thư, vv vào biểu tượng dock của tôi. –
Chọn ứng dụng của bạn trong nhóm mục tiêu của ngăn bên và sử dụng thông tin. Sau đó, trong cửa sổ mới, chọn thẻ thuộc tính để thêm một loại tài liệu mới. Đặt tên nó là "Thư mục" để thuận tiện và các loại Hệ điều hành cần phải "gấp"; loại cửa hàng và vai trò bạn có thể để nguyên.
Cảm ơn Điều đó đã giúp tôi làm cho ứng dụng của tôi hoạt động. – AmitSri
Trên hệ thống hiện tại, bạn có thể sử dụng UTI thay vì kiểu bốn kiểu cũ (chẳng hạn như fold
ở trên). Trong trình soạn thảo loại tài liệu Xcode của, tạo ra một loại mới với:
- Tên: Thư mục
- Định danh: public.folder
public.folder
là một subtype của public.directory
. public.folder
khớp với các thư mục xuất hiện như vậy đối với người dùng, nghĩa là không phải gói như .app
trình bao bọc.
Dưới đây là một giải pháp cập nhật cho Xcode 5. Trong AppDelegate.m
-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
{
NSLog(@"%@", filename);
return YES;
}
Và trong Xcode loại tài liệu thiết lập dưới Dự án> Mục tiêu> Thông tin:
thiết lập Kiểm tra trong Info.plist trong trường hợp bạn có một mảng 'Loại nội dung tài liệu UTI' trống cần được điền chính xác hoặc bị xóa khác.
Info.plist bạn nên tìm một cái gì đó như thế này:
câu trả lời tuyệt vời! rất hữu ích. thanks – gypsyDev
Lưu ý rằng điều này sẽ làm cho ứng dụng của bạn chấp nhận * bất kỳ * tệp nào, không chỉ là một phần mở rộng đã cho, vì CFBundleTypeExtensions được đặt thành '*'. Nếu bạn chỉ hỗ trợ một số tiện ích mở rộng tệp nhất định, hãy chỉ định chúng ở đó thay thế. Nếu không, hệ điều hành sẽ cung cấp để mở các tệp ngẫu nhiên với ứng dụng của bạn chỉ để ứng dụng của bạn thất bại sau đó. – uliwitness
Tôi không hiểu câu hỏi. Người dùng có đang kéo tệp vào biểu tượng Dock của bạn hay bạn muốn mở tệp theo chương trình? –
Tôi có nghĩa là để thực sự có được đường dẫn đến tập tin đã được thả vào biểu tượng dock. –