取消后 UIActivityViewController 不起作用
Posted
技术标签:
【中文标题】取消后 UIActivityViewController 不起作用【英文标题】:UIActivityViewController not working after Cancel 【发布时间】:2014-04-06 15:06:10 【问题描述】:我在通用应用程序中使用UIActivityViewController
的实例。它在 iPad 上完美运行。几乎,但不是完全在 iPhone 上。
我使用:
[self presentViewController:self.activityViewController animated:YES completion:nil];
它正确显示了可用的活动,如果我选择一个,它就可以工作。然后,我可以再次点击“共享”按钮,并根据自己的喜好多次重复相同或不同的活动,只要我完成了该活动即可。
如果我从UIActivityViewController
取消,一切都很好;但是如果我从邮件或消息中取消,下次我点击共享时,什么也不会发生。如果我不耐烦并再次点击,我会收到以下错误:
'应用程序试图以模态方式呈现一个活动控制器。'
我尝试在第二次展示控制器之前将其关闭,但它认为它无法关闭。我也尝试从根/导航控制器以及 tableviewcontroller 呈现它,但得到了等效的错误(即应用程序试图呈现根控制器)。
我发现UIActivityViewController
存在很多“奇怪”问题,但我看不到任何与我的问题相关的内容。
【问题讨论】:
我不确定编辑我的 OP 以添加一些句号和一个不相关的标签的价值(我的 OP 中没有提到 UIActivityIndicatorView)。任何解决问题的建议都非常感谢!奇怪的是,您需要 2k 声望才能拒绝对我自己帖子的错误编辑! 看起来你引用并持有你的 activityViewController 作为一个属性。这可能是这里的问题;您是否检查过堆栈中其他地方没有 self.activityViewController 的多个实例? 感谢您的建议。我很确定我没有得到多个实例。我使用了一个实例化属性的 getter:- (UIActivityViewController *)activityViewController if ( !_activityViewController ) _activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil]; return _activityViewController;
它也可以在 iPad 上完美运行,唯一的区别在于演示文稿:
【参考方案1】:
问题是由于我使用的示例代码造成的。我假设正在执行解除代码,但实际上并没有!
我最终实现了 UIPopoverControllerDelegate 并实现了:
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
[self setPopoverActivity:nil];
这解决了它!
【讨论】:
【参考方案2】:这也发生在我身上,我看到了你的回答,但我不明白,因为“setPopoverActivity”无法识别。所以我开始做一些改变,这解决了只是在动作 void 中初始化“UIActivityViewController”而不是在 viewDidLoad 上,它最初是在哪里。
- (void) flipView
self.activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:self.dataToShare
applicationActivities: nil];
self.activityViewController.excludedActivityTypes = @[UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypeAssignToContact, UIActivityTypeAddToReadingList];
[self presentViewController:self.activityViewController animated:YES completion:nil];
希望对你有帮助!
【讨论】:
嗨。谢谢。 setPopoverActivity 是我用来保存控制器实例的 popoverActivity 属性的设置器。以上是关于取消后 UIActivityViewController 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何防止在暂停场景上运行 SKAction(取消暂停后),节点纹理在暂停/取消暂停场景后不改变