【发布时间】:2014-01-28 00:08:55
【问题描述】:
我有一个带有分享按钮的应用。这个分享按钮加载一个 UIActivityViewController 用于分享到 Facebook、Twitter、电子邮件、短信等。
它以前可以正常工作,我认为它在模拟器上仍然可以正常工作,但是在设备上,视图控制器会显示所有正确的选项,如果你点击一个,要么什么都没有发生,或者如果它是邮件,邮件模式视图加载然后自行关闭。然后我得到我的日志“未执行活动。”,这是当完成块返回 false 完成但 activityType 不为空时。所以它正在识别选择,但由于某种原因它没有将活动加载到视图中
我已经检查了我要分享的内容,甚至将其替换为虚拟内容(如下所示),但仍然没有运气。我使用的是普通设备,我设置了 Twitter、Mail 和 Facebook 帐户,发短信也可以。唯一有效的是复制(即当您将共享内容复制到剪贴板时)。在同一设备上的其他应用程序中,UIActivityViewController 和所选活动的加载工作得很好。在运行该应用的其他设备上也发现了同样的问题。
真的不明白这里的问题是什么。非常令人困惑!任何尝试的帮助或建议将不胜感激。我没有看到任何调试此问题的方法。
这是代码:(注意我也尝试删除图像,没有运气)
- (void)shareTapped {
NSString *shareText = @"Testing";//[self shareText];
NSURL *url = [NSURL URLWithString:@"http://www.google.ca"]; //[self shareURL];
NSArray *activityItems = [NSArray arrayWithObjects:shareText,url, self.shareImage, nil];
UIActivityViewController *shareDrawer = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
shareDrawer.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypePrint];
shareDrawer.completionHandler = ^(NSString *activityType, BOOL completed) {
if (completed) {
NSLog(@"Selected activity was performed.");
} else {
if (activityType == NULL) {
NSLog(@"User dismissed the view controller without making a selection.");
} else {
NSLog(@"Activity was not performed.");
}
}
NSString *result = completed ? @"success" : @"fail";
if (activityType == NULL) {
result = @"dismissed";
}
};
[self presentViewController:shareDrawer animated:YES completion:nil];
}
【问题讨论】:
-
您是否尝试过在数组中的对象上实现 UIActivityItemSource 协议而不是将数据作为单独的元素添加到数组中?不确定它是否真的对您的情况有所不同,因为听起来它在呈现视图时失败了,但我想它值得一试来改变数据的馈送方式。
-
我将几乎完全相同的代码放入我正在开发的一个不同的、更简单的应用程序中,它运行良好......我的应用程序中可能会出现什么问题?
-
还尝试将 UIActivityViewController 放在我的问题应用程序的另一个视图控制器中,但它不起作用。
-
我尝试添加一个空白视图控制器,其中只有一个共享按钮,它会触发 UIActivityViewController,它工作正常,所以我的视图控制器中一定有一些冲突......
-
我还注意到活动视图控制器的奇怪行为,所以我不怀疑您遇到了一些无法轻易解释的怪癖。也缺乏关于它的文档,有点让我陷入了一段时间的循环。很高兴您找到了解决方案!
标签: ios iphone sharing uiactivityviewcontroller uiactivity