小编典典

UIActivityViewController 在 iOS 8 iPad 上崩溃

all

我目前正在使用 Xcode 6(Beta 6)测试我的应用程序。UIActivityViewController 在 iPhone
设备和模拟器上运行良好,但在 iPad 模拟器和设备 (iOS 8) 上崩溃并出现以下日志

Terminating app due to uncaught exception 'NSGenericException', 
reason: 'UIPopoverPresentationController 
(<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc7a874bd90>) 
should have a non-nil sourceView or barButtonItem set before the presentation occurs.

我正在为 iOS 7 和 iOS 8 使用 iPhone 和 iPad 的以下代码

NSData *myData = [NSData dataWithContentsOfFile:_filename];
NSArray *activityItems = [NSArray arrayWithObjects:myData, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:nil applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard];
[self presentViewController:activityViewController animated:YES completion:nil];

我的另一个应用程序也发生了类似的崩溃。你能指导我吗?iOS 8 中的 UIActivityViewController
有什么变化吗?我查过了,但我没有找到任何关于此的内容


阅读 95

收藏
2022-04-21

共1个答案

小编典典

在 iPad
上,活动视图控制器将使用新的UIPopoverPresentationController显示为弹出框,它要求您使用以下三个属性之一为弹出框的呈现指定一个锚点:

为了指定锚点,您需要获取对 UIActivityController 的 UIPopoverPresentationController
的引用并设置以下属性之一:

if ( [activityViewController respondsToSelector:@selector(popoverPresentationController)] ) { 
// iOS8
 activityViewController.popoverPresentationController.sourceView =
parentView;
 }
2022-04-21