2016-04-04 3 views
0

私は(UIPopoverPresentationControllerを使用して)iPad上のポップオーバーでプレゼンテーションしているUIActivityViewControllerを持っています。UIAopivityViewControllerがUIPopoverPresentationControllerで提示されたときにサイズ変更されない

最初にポップオーバーが表示されている場合、そのサイズは正しいです。 「More」をタップすると、「Activities」ビューが表示されます。 'Done'をタップすると、UIActivityViewControllerは初期サイズにサイズ変更されず、UIActivityViewController内のコンテンツは残念ながら全体のビューを占めません。 UIActivityViewController

表示: enter image description here

ポップオーバーが切断されるからテキストを防止するために、以下のように拡張します。「詳細」ボタンを enter image description here

タップここ

が取ら歩ですオフ。ポップオーバーは、その初期サイズが何であったかを再度サイズは変更されません enter image description here

:navigationBarの「完了」ボタンを

をタップ。 UIActivityViewController作成および表示で

コード:

- (void)actionButtonTapped:(id)sender { 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.pdfSummary] applicationActivities:nil]; 

BOOL canSendMail = [MFMailComposeViewController canSendMail]; 
NSMutableArray *excluded = [@[UIActivityTypeAddToReadingList, 
     UIActivityTypeAssignToContact, 
     UIActivityTypeCopyToPasteboard, 
     UIActivityTypeMessage, 
     UIActivityTypePostToFacebook, 
     UIActivityTypePostToFlickr, 
     UIActivityTypePostToTencentWeibo, 
     UIActivityTypePostToTwitter, 
     UIActivityTypePostToVimeo, 
     UIActivityTypePostToWeibo, 
     UIActivityTypeSaveToCameraRoll] mutableCopy]; 
if (!canSendMail) { 
    [excluded addObject:UIActivityTypeMail]; 
} 
activityViewController.excludedActivityTypes = excluded; 

[self showActivityViewController:activityViewController fromBarButtonItem:sender]; 

}

そしてshowActivityViewController方法は、次のようになります。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:activityViewController]; 
navController.modalPresentationStyle = UIModalPresentationPopover; 
navController.navigationBarHidden = YES; 

UIPopoverPresentationController *popoverPresentationController = [navController popoverPresentationController]; 

popoverPresentationController.permittedArrowDirections = arrowDirection; 
popoverPresentationController.barButtonItem = buttonItem; 

[self presentViewController:navController animated:YES completion:nil]; 

return popoverPresentationController; 

は、このために任意の回避策があります。ポップオーバーのサイズを変更するか、ただ1つのサイズにしますか?

私はUIActivityViewControllerをサブクラス化しpreferredContentSizeを変更しようとしたが、UIActivityControllerのコンテンツは、ナビゲーションコントローラに活動コントローラを入れないでくださいポップオーバーのサイズ

+0

を、あなたは最上位のビューコントローラからこのポップオーバーを表示する必要があります。私はまた、デリゲートの完了ハンドラからそれを却下する必要があると思います。 どのようにポップオーバーを解除しますか? – fsb

+0

あなたは 'UIActivityViewController'を表示するために独自のnavコントローラまたはpopoverを作成すべきではありません。 – rmaddy

+0

現在のところ、それを外したり、リスト内のアイテムが選択されているときは、それは解消されていますが、それを却下することは問題ではありません。 – user3253063

答えて

0

に合わせてサイズを変更しません。アクティビティコントローラからのポップオーバーを直接使用します。次のように

あなたのshowActivityViewControllerを更新することができます。私の記憶が正しければ

UIPopoverPresentationController *popoverPresentationController = [activityViewController popoverPresentationController]; 

popoverPresentationController.permittedArrowDirections = arrowDirection; 
popoverPresentationController.barButtonItem = buttonItem; 

[self presentViewController:activityViewController animated:YES completion:nil]; 
関連する問題