【问题标题】:UIActivityViewController not resizing when presented in UIPopoverPresentationControllerUIActivityViewController 在 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

标签: ios objective-c ipad


【解决方案1】:

不要将活动控制器放入导航控制器中。直接使用活动控制器中的弹出框。

您可以按如下方式更新您的showActivityViewController

UIPopoverPresentationController *popoverPresentationController = [activityViewController popoverPresentationController];

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

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

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-09-05
    相关资源
    最近更新 更多