UIActivityViewController が iOS 8 iPad でクラッシュする 質問する

UIActivityViewController が iOS 8 iPad でクラッシュする 質問する

現在、Xcode 6 (ベータ 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に何か変更がありましたか?確認しましたが、これについては何も見つかりませんでした。

ベストアンサー1

iPadでは、アクティビティビューコントローラは新しいUIPopoverプレゼンテーションコントローラ、次の 3 つのプロパティのいずれかを使用して、ポップオーバーの表示のアンカー ポイントを指定する必要があります。

アンカー ポイントを指定するには、UIActivityController の UIPopoverPresentationController への参照を取得し、次のいずれかのプロパティを設定する必要があります。

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

おすすめ記事