当用户共享到时,我想做一些事情
- (void)sharingService:(NSSharingService *)sharingService didShareItems:(NSArray *)items
{
BOOL isSafariReadingList = [sharingService.description rangeOfString:NSSharingServiceNameAddToSafariReadingList].location != NSNotFound;
}我在NSSharingService上找不到任何可以与常量进行比较的属性。我是不是遗漏了什么?!
发布于 2014-02-20 18:26:30
由于它似乎没有答案(归档http://openradar.appspot.com/16114564),我创建了一个类别
@implementation NSSharingService (ActivityType)
- (NSString*)activityType {
NSRange range = [self.description rangeOfString:@"\\[com.apple.share.*\\]" options:NSRegularExpressionSearch];
range.location++; // Start after [
range.length -= 2; // Remove both [ and ]
return [self.description substringWithRange:range];
}
@end然后,您可以通过以下方式使用它:
[[sharingService activityType] isEqualToString:NSSharingServiceNameAddToSafariReadingList];
[@[NSSharingServiceNameAddToSafariReadingList, NSSharingServiceNameAddToIPhoto]
containsObject:[sharingService activityType]];我猜苹果只是认为我们不会想知道人们从Picker中选择了哪种服务。
解析“com.apple.share.System”显然很危险,但这是我避免一组rangeOfString || rangeOfString || rangeOfString….的唯一方法。
有关更多信息,请查看
此外,作为参考,下面是那些以com.apple.share.开头的NSSharingServiceName*常量的一些值
PostOnFacebook Facebook.post
PostOnTwitter Twitter.post
PostOnSinaWeibo SinaWeibo.post
PostOnTencentWeibo TencentWeibo.post
PostOnLinkedIn LinkedIn.post
ComposeEmail Mail.compose
ComposeMessage Messages.compose
SendViaAirDrop AirDrop.send
UseAsTwitterProfileImage Twitter.set-profile-image
UseAsFacebookProfileImage Facebook.set-profile-image
UseAsLinkedInProfileImage LinkedIn.set-profile-image
PostImageOnFlickr Video.upload-image-Flickr
AddToSafariReadingList System.add-to-safari-reading-list
AddToIPhoto System.add-to-iphoto发布于 2015-10-09 21:51:52
此检查的等价物在我的Swift代码中有效:
sharingService == NSSharingService(named: NSSharingServiceNameAddToSafariReadingList)https://stackoverflow.com/questions/21797141
复制相似问题