Невозможно добавить элемент в контекстное меню Finder с помощью служб в Cocoa
Я хотел бы добавить элемент в контекстное меню моего Finder всякий раз, когда я нажимаю правой кнопкой мыши на файлы или папки, и это меню связано с методом моего приложения Cocoa.
Я следую примеру CocoaDev и документации Apple, но я не могу получить отображаемую службу.
Вот моя .h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate,NSObject>
@property (assign) IBOutlet NSWindow *window;
-(void)IClicked:(NSPasteboard *)pboard
userData:(NSString *)data
error:(NSString **)error;
@end
.м
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSApp setServicesProvider:self];
}
- (void)IClicked:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
NSLog(@"I clicked");
}
@end
и выдержка моего Application-plist.info:
<key>NSServices</key>
<array>
<dict>
<key>NSKeyEquivalent</key>
<dict>
<key>default</key>
<string>E</string>
</dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>My Application</string>
</dict>
<key>NSMessage</key>
<string>IClicked</string>
<key>NSPortName</key>
<string>TestService</string>
<key>NSSendFileTypes</key>
<array>
<string>public.item</string>
</array>
<key>NSSendTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
<key>NSRequiredContext</key>
<dict>
<key>NSServiceCategory</key>
<string>public.item</string>
</dict>
<key>NSReturnTypes</key>
<array>
<string>NSPasteboardTypeString</string>
</array>
</dict>
</array>
</dict>
Я загрузил код http://www.petits-suisses.ch/TestService.zip.
что я сделал неправильно, или есть какой-либо доступный код какао, который я могу скачать, чтобы понять, что я сделал неправильно ?
Спасибо !
1 ответов
нашли вопросы:
1. Мне действительно пришлось хранить мое приложение хотя бы один раз в папке Applications (что не делается по умолчанию при компиляции с помощью Xcode)
2. Надо было добавить NSUpdateDynamicServices (); после [NSApp setServicesProvider:самостоятельное];.
3. Подождите примерно 10 секунд после запуска приложения, чтобы заполнить меню служб Finder.