【问题标题】:UIActivityViewController not working after Cancel取消后 UIActivityViewController 不起作用
【发布时间】: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 上完美运行,唯一的区别在于演示文稿:

标签: ios iphone uiactivityviewcontroller airdrop


【解决方案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 属性的设置器。
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多