在iOS8上,我正在使用UIActivityViewController与Facebook/Twitter等共享UIImage.它似乎工作正常,但今天它在我的iPad上运行代码时突然崩溃了.但是,它仍然可以在模拟器中按预期工作.
我的代码:
UIActivityViewController *controller =
[[UIActivityViewController alloc]
initWithActivityItems:@[text, url, myImage]
applicationActivities:nil];
[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
崩溃后,Xcode吐出:
发现的扩展名:{({id = com.apple.share.Facebook.post},{id = com.apple.share.Twitter.post},{id = com.apple.share.TencentWeibo.post},{id = com.apple.share.SinaWeibo.post})} for attributes:{NSExtensionActivationRule = {extensionItems =({attachments =({registeredTypeIdentifiers =("public.image");},{registeredTypeIdentifiers =("public.plain-text" );},{registeredTypeIdentifiers =("public.url");});}); }; NSExtensionPointName =("com.apple.share-services","com.apple.ui-services","com.apple.services"); 2014-08-07 21:38:59.208 collageTest [279:11021] LaunchServices:invalidationHandler被称为2014-08-07 21:38:59.212 collageTest [279:11016]发现的扩展:{({id = com.apple.share .Flickr.post},{id = com.apple.mobileslideshow.StreamShareService},{id = com.apple.share.Twitter.post},{id = com.apple.share.Facebook.post},{id = com .apple.share.Vimeo.post},{id = com.apple.share.SinaWeibo.post},{id = com.apple.share.TencentWeibo.post})} for attributes:{NSExtensionPointName ="com.apple.共享服务"; 2014-08-07 21:38:59.216 collageTest [279:11021] LaunchServices:invalidationHandler被调用
我已经在这里和这里查看了相关的问题,并且我已经实现了建议的答案但无济于事.
我在UIToolbar上有一个UIBarButtonItem,发送操作的连接到btnTBAction_touch:
在ViewController的类头中,我有:
@property (nonatomic, strong) UIActivityViewController *activityViewController;
Run Code Online (Sandbox Code Playgroud)
类实现中的相关方法:
- (IBAction)btnTBAction_touch:(id)sender {
NSString *string = @"Some string";
NSURL *url = [[NSURL alloc] initWithString:@"http://www.google.com"];
UIImage *image = [UIImage imageNamed:@"default.png"];
self.activityViewController = [[UIActivityViewController alloc]
initWithActivityItems:@[string, url, image] applicationActivities:nil];
if ([self.activityViewController respondsToSelector:@selector(popoverPresentationController)])
{
UIPopoverPresentationController *presentationController = [self.activityViewController
popoverPresentationController];
presentationController.sourceView = sender;
}
[self presentViewController:self.activityViewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
当我触摸调用上述方法的按钮时,在物理设备上以调试模式运行时,我在调试控制台中获得以下内容
2014-09-19 09:43:31.635 TestApp[1878:237873] LaunchServices: invalidationHandler called
2014-09-19 09:43:31.644 TestApp[1878:237814] LaunchServices: invalidationHandler called
Run Code Online (Sandbox Code Playgroud)
但是,与相关问题不同,我的应用程序在发生这种情况时不会崩溃,应用程序继续正常运行并且UIActivityViewController正确显示...但我宁愿修复错误而不是说它已经足够好了.
另外,我尝试使用以下方法对上述方法进行了一些排列:
presentationController.sourceView = self.view;
presentationController.sourceRect = self.view.frame;
Run Code Online (Sandbox Code Playgroud)
这些都没有帮助解决问题. …
我正在玩Airdrop的想法.Apple运行示例代码时出错:
https://developer.apple.com/library/ios/samplecode/sc2273/Introduction/Intro.html
错误消息是:
LaunchServices: invalidationHandler called
Run Code Online (Sandbox Code Playgroud)
问题显然是由UIActivityViewController.相关的代码是下#pragma mark - Actions的这个文件,如果你可以去看看.
它仅在设备(iPhone和iPad)上运行时显示错误消息.如果在模拟器(iPhone和iPad)上运行,这一切都很好.这是什么原因?有关如何解决它的任何想法?它可能是一个错误吗?
以下提出了类似的问题,其中任何一个似乎都无法回答这个问题:
LaunchServices:invalidationHandler被调用 - iOS 8共享表
通过UIActivityViewController分享到Twitter/Facebook等导致崩溃
目前UIActivityViewController- LaunchServices:invalidationHandler被调用