1

I am using a UIActivityViewController to implement image sharing.

UIActivityViewController *shareVC = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil];
[shareVC setCompletionHandler:^(NSString *activityType, BOOL completed){
    NSLog(@"completed image export activity: %@ - %d", activityType, completed);
}];
[self presentViewController:shareVC animated:true completion:nil];

In testing, I have noticed that if the user selects, for example, "Assign to Contact", but then denies the permission in the ensuing dialog, then they are taken to a screen that says "This app does not have access to your contacts. You can enable access in Privacy Settings.", from which there is no way to back out. The only way for them then to get back to the actual app is to manually restart it.

I'm fairly happy to leave this behaviour as is for now since I don't anticipate any users will be particularly bothered by it, but I'd like to know if there is a sensible way to work around it, and if it is indeed the expected behaviour.

4

2 回答 2

0

嗯,也许您可​​以检查当新的“此应用程序无权访问您的联系人。您可以...”时是否调用了 segue - 显示视图控制器。然后,您可以操作 segue 的destinationViewController 属性并添加例如一个按钮,以及使用户能够返回的操作。

都是高度理论化的。

于 2013-07-05T11:48:59.103 回答
0

我在 iPad 平台上工作,根据文档,在这种情况下UIActivityViewController直接呈现 a 是错误的,该文档指出

在呈现视图控制器时,您必须使用当前设备的适当方式来执行此操作。在 iPad 上,您必须在弹出窗口中显示视图控制器。在 iPhone 和 iPod touch 上,您必须以模态方式呈现。

在大多数情况下,iPad 上模态显示的视图控制器的行为看起来非常好,但这个案例说明了为什么它不合适。我不知道如何在 iPhone / iPod touch 上处理等效案例,因为我还没有真正看过这些平台。

现在我在 a 中展示它,UIPopoverController解释应用程序无权访问联系人的视图出现在弹出窗口中,并在弹出窗口被关闭时被关闭。不幸的是,在这种情况下似乎没有调用完成处理程序;我不确定这是 iOS 错误还是我对某些东西缺乏了解。目前对我来说这是一个小问题,所以我必须解决它。

不幸的是,我的问题/答案似乎不太可能帮助遇到相关问题的任何人;也许我会尝试编辑问题。

于 2013-07-23T18:57:55.573 回答