【发布时间】:2013-12-10 15:16:35
【问题描述】:
我正在尝试启用在选定 Files and Folders 上运行的服务,类似于可以在 Finder 中调用的服务。
我有以下基于Services Implementation Guide 的内容,但仅适用于文本等
+ (void)initialize {
static BOOL initialized = NO;
/* Make sure code only gets executed once. */
if (initialized == YES) return;
initialized = YES;
NSArray *sendTypes = [NSArray arrayWithObject:NSStringPboardType];
[NSApp registerServicesMenuSendTypes:sendTypes returnTypes:nil];
NSLog(@"initialize MyTableView");
}
- (id)validRequestorForSendType:(NSString *)sendType returnType:(NSString *)returnType {
NSLog(@"validRequestorForSendType %@%@", sendType, returnType);
if ([sendType isEqual:NSStringPboardType]) {
return self;
}
return [super validRequestorForSendType:sendType returnType:returnType];
}
如何实现 URL?
文档说明
你的 NSResponder 对象可以注册任何粘贴板数据类型,public 或专有的,常见的或罕见的。如果它处理公众和普通 类型,当然,它可以访问更多的服务。对于列表 标准粘贴板数据类型,请参阅 NSPasteboard 类参考。
似乎没有对应的粘贴板数据类型。我试过NSURL,NSURL class
NSFilenamesPboardType 部分有效,但没有显示所有服务查找器所做的,并且似乎属于(OS X v10.5 及更早版本)
编辑说明
我一直在关注Services Implementation Guide,好像有3个步骤
1.注册服务对象
NSApp registerServicesMenuSendTypes: returnTypes:
2.验证服务菜单项
validRequestorForSendType:returnType:
3.向服务发送数据
writeSelectionToPasteboard:types:
我有第一个可以部分工作的(尽管当我尤其选择文件时,我无法在Finder中看到相同的菜单
第三个似乎是症结所在
NSTextView 似乎支持此功能,但 NSObject 已弃用此功能
我真的很想知道如何像许多其他应用程序一样使用 Files and Folders 的服务。
【问题讨论】:
-
这个问题让我很困惑。您是否想显示与应用程序菜单中相同的“服务”菜单(例如,在运行 TextEdit 时在“TextEdit”菜单下;在运行 Safari 时在“Safari”菜单下)。
-
你在说什么查找器菜单??
-
我创建服务没有问题。我想要的是向应用程序添加类似于上面编辑的图像的服务菜单
标签: objective-c macos