使用NSPerformService以编程方式调用服务无法正常工作

时间:2011-05-25 01:21:01

标签: cocoa macos service

NSPerformService(@"Copy Selected Text", pboard);

- (void)copyText:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {
NSString *copiedText = [pboard stringForType:NSStringPboardType];
NSLog('copied text %@', copiedText);
}

copyText:userData:error:成功调用但是copiedText为空,不应该。 在调用NSPerformService之前,我确实选择了一些文本。

如果我通过选择“服务”菜单调用我的服务,它可以正常工作。

我假设调用NSPerformService没有将选择文本写入generalPasteboard。

1 个答案:

答案 0 :(得分:0)

NSPerformService无法自动获取所选文字。它旨在使您能够在没有UI的情况下使用服务(例如,在命令行工具中)。您必须专门将要使用该服务的文本放入作为参数提供的粘贴板中。当然,对于“复制选定文本”服务,这没有任何意义......