我刚刚实现了一个共享按钮,它有一个共享菜单:
[_shareButton sendActionOn:NSLeftMouseDownMask];并连接了此操作:
-(IBAction)share:(id)sender {
NSArray *shareArray = @[@"testShare"];
NSSharingServicePicker *sharingServicePicker = [[NSSharingServicePicker alloc] initWithItems:shareArray];
sharingServicePicker.delegate = self;
[sharingServicePicker showRelativeToRect:[sender bounds]
ofView:sender
preferredEdge:NSMinYEdge];
}现在我的问题是,我不希望Facebook和Twitter成为菜单中的一个选项。我只希望电子邮件和消息可用。我还想添加“打印”,但不知道我是否可以做到这一点。
这有可能吗?
谢谢
(没有足够的代表点将'NSSharingService‘添加为标签)
发布于 2013-05-23 15:19:18
使用proposedSharingServices解决了这个问题。
- (NSArray *)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker sharingServicesForItems:(NSArray *)items proposedSharingServices:(NSArray *)proposedServices{
// Find and the services you want
NSMutableArray *newProposedServices = [[NSMutableArray alloc] initWithCapacity:5];
for (NSSharingService *sharingService in proposedServices) {
if ([[sharingService title] isEqualToString:@"Email"] || [[sharingService title] isEqualToString:@"Message"]) {
[newProposedServices addObject:sharingService];
}
}
NSArray *services = newProposedServices;
NSSharingService *customService = [[NSSharingService alloc] initWithTitle:@"Print" image:[NSImage imageNamed:@"PrintImage"] alternateImage:nil handler:^{
// Do whatever
}];
services = [services arrayByAddingObject:customService];
return services;}
发布于 2015-10-09 21:59:24
将建议的服务与新命名的实例进行比较是可行的。下面是我的项目中的一个简单的Swift代码:
let excludedNames = [
NSSharingServiceNamePostOnFacebook,
NSSharingServiceNamePostOnTwitter,
]
var excludedServices = [NSSharingService]()
for name in excludedNames {
if let service = NSSharingService(named: name) {
excludedServices += [service]
}
}
return proposedServices.filter {
!excludedServices.contains($0)
}不需要使用私有name属性。
发布于 2016-10-02 02:30:13
与其试图说出你不想要的东西,不如简单地返回一个你想要的列表。
- (NSArray<NSSharingService *> *)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker sharingServicesForItems:(NSArray *)items proposedSharingServices:(NSArray<NSSharingService *> *)proposedServices
{
NSArray *result = @[[NSSharingService sharingServiceNamed:NSSharingServiceNameComposeEmail], [NSSharingService sharingServiceNamed:NSSharingServiceNameComposeMessage]];
return result;
}https://stackoverflow.com/questions/16067744
复制相似问题