取消后UIActivityViewController无法正常工作

时间:2014-04-06 15:06:11

标签: ios iphone uiactivityviewcontroller airdrop

我在通用应用中使用UIActivityViewController的实例。它在iPad上完美运行。 iPhone上几乎没有,但并不完全。

我使用以下方式呈现:

    [self presentViewController:self.activityViewController animated:YES completion:nil];

它正确显示可用的活动,如果我选择一个,它可以正常工作。然后,我可以再次点击“共享”按钮,并按照我喜欢的方式重复相同或不同的活动,只要我完成活动。

如果我从UIActivityViewController取消,一切都很好;但如果我从邮件或消息中取消,下次我点击分享时,没有任何反应。如果我不耐烦再次点击,我会收到以下错误:

'应用程序尝试以模态方式呈现活动控制器。'

我在第二次出示控制器之前尝试解雇控制器,但它并不认为它是可以接受的。我也试过从根/导航控制器以及tableviewcontroller中呈现它,但是得到了相同的错误(即app试图呈现根控制器)。

我看到有很多奇怪的' UIActivityViewController的问题,但我无法看到与我的问题相关的任何内容。

2 个答案:

答案 0 :(得分:1)

问题是由于我使用的示例代码。我认为解雇代码正在执行,而不是!

我最终实现了UIPopoverControllerDelegate并实现了:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    [self setPopoverActivity:nil];
}

这修好了!

答案 1 :(得分:0)

这也发生在我身上,我看到了你的答案,我不明白,因为“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];

}

希望它有所帮助!