取消后 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 中没有提到 UIActivityIndi​​catorView)。任何解决问题的建议都非常感谢!奇怪的是,您需要 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(取消暂停后),节点纹理在暂停/取消暂停场景后不改变

买东西时用了淘宝店铺优惠券,取消订单后,优惠券会退回吗?

滑动手势取消编辑模式后 UITableViewCell 刷新不良

jquery允许取消提交后提交表单

iPhone在延迟后取消选择行

Stripe:n 次付款后过期/取消订阅