UIActivityViewController 在 UIPopoverPresentationController 中呈现时未调整大小
Posted
技术标签:
【中文标题】UIActivityViewController 在 UIPopoverPresentationController 中呈现时未调整大小【英文标题】:UIActivityViewController not resizing when presented in UIPopoverPresentationController 【发布时间】:2016-04-04 13:29:07 【问题描述】:我有一个 UIActivityViewController,我在 iPad 上的弹出窗口中展示(使用 UIPopoverPresentationController)。
当弹出框最初显示时,它的大小是正确的。当我点击“更多”时,会显示“活动”视图。当我点击“完成”时,UIActivityViewController 不会调整到其初始大小,不幸的是 UIActivityViewController 中的内容不会占据整个视图。
这里是采取的步骤:
显示 UIActivityViewController:
点击“更多”按钮:
弹出框会展开以防止文本被截断。
点击导航栏上的“完成”按钮:
弹出框不会再次调整到其初始大小。
创建和显示 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;
是否有任何解决方法。调整弹出框的大小还是只保留一个大小?
我已尝试继承 UIActivityViewController 并更改首选内容大小,但 UIActivityController 的内容不会调整大小以适应弹出框的大小
【问题讨论】:
如果我没记错的话,你需要从最顶层的视图控制器中显示这个弹出框。我还认为您需要从委托的完成处理程序中将其关闭。你是如何关闭弹出框的? 您不应该创建自己的导航控制器或弹出框来显示UIActivityViewController
。
目前@fbara 在点击它外部或选择列表中的项目时将其关闭,但在这里关闭它不是问题。
如何在 iPad @rmaddy 的弹出窗口中显示 UIActivityViewController
?
直接从UIActivityViewController
获取popoverPresentationController
并设置它的barButtonItem
。
【参考方案1】:
不要将活动控制器放入导航控制器中。直接使用活动控制器中的弹出框。
您可以按如下方式更新您的showActivityViewController
:
UIPopoverPresentationController *popoverPresentationController = [activityViewController popoverPresentationController];
popoverPresentationController.permittedArrowDirections = arrowDirection;
popoverPresentationController.barButtonItem = buttonItem;
[self presentViewController:activityViewController animated:YES completion:nil];
【讨论】:
以上是关于UIActivityViewController 在 UIPopoverPresentationController 中呈现时未调整大小的主要内容,如果未能解决你的问题,请参考以下文章
UIActivityViewController 共享 UIActivity 未显示
UIActivityViewController 不适用于 WKWebView
限制 UIActivityViewController 共享扩展活动