UIActivityViewController或UIAlertController无法取消

时间:2015-08-18 22:04:52

标签: ios objective-c uiactivityviewcontroller uialertcontroller

我正在尝试使用UIActivityViewController分享网址,如下所示。这显示罚款,但不能取消,即点击取消按钮什么都不做。这只是在我的应用程序内。如果我使用嵌入在导航控制器中的视图控制器创建测试应用程序,它可以正常工作。我的应用程序有一个带有导航控制器的标签栏控制器和我试图从第三个选项卡上显示的视图控制器,它是当前的顶视图控制器。

NSString *string =  @"Check this site out";
NSURL *URL = [NSURL URLWithString:@"www.apple.com"];

self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[string, URL] applicationActivities:nil];          

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

我也尝试将它所呈现的控制器更改为tabWindow的标签栏控制器和根视图控制器,但没有运气。

我甚至尝试添加一个完成处理程序,如下所示,但这甚至都没有被调用!

__weak typeof(self) weakSelf = self;

[self.activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) {

    [weakSelf dismissViewControllerAnimated:YES completion:nil];
}];

不确定如何继续...欢迎任何建议。

更新

有趣的是,我发现我无法取消/解雇UIAlertController ......即使有这个基本的Apple示例。

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"  message:@"This is an alert." preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {}];

[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];

1 个答案:

答案 0 :(得分:0)

好的,事实证明这些控制器总是从根视图控制器呈现。我正在使用的应用程序有一个根视图控制器覆盖dismissViewController:animated:并且没有调用超级。