objective-c - 防止 UIPopover 在 iPhone 6 plus 上横向显示为 UIPageSheet

标签 objective-c iphone uisplitviewcontroller iphone-6-plus uitraitcollection

我正在尝试显示一个带有 UISliderpopOver,以允许用户控制 textSize WKWebView.

这是我的做法:

MYCustomViewController *popoverContent = [[self storyboard] instantiateViewControllerWithIdentifier:@"MYCustomViewController"];
    popoverContent.delegate = self;
    popoverContent.modalPresentationStyle = UIModalPresentationPopover;
    UIPopoverPresentationController *popover = popoverContent.popoverPresentationController;
    popoverContent.preferredContentSize = CGSizeMake(220, 40);
    popover.delegate = self;
    popover.barButtonItem = (UIBarButtonItem *)sender;

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

在自定义ViewController中,我刚刚添加了一个委托(delegate)来获取UISlider

我也实现了这个方法:

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
  return UIModalPresentationNone;
}

除了横向(即紧凑高度)的 iPhone 6 Plus 之外,所有设备都运行良好,它将 popover 显示为 UIPageSheet

注意:我在 UISplitViewControllerdetailViewController 中呈现来自 UIbarButtonItem 的弹出窗口

最佳答案

我按照 @Joshua 的建议,通过实现 UIAdaptivePresentationControllerDelegate: 的新 adaptivePresentationStyleForPresentationController:traitCollection: 方法解决了这个问题

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection {
    // This method is called in iOS 8.3 or later regardless of trait collection, in which case use the original presentation style (UIModalPresentationNone signals no adaptation)
    return UIModalPresentationNone;
}

UIModalPresentationNone 告诉演示 Controller 使用原始演示样式,在您的情况下将显示一个 popover

关于objective-c - 防止 UIPopover 在 iPhone 6 plus 上横向显示为 UIPageSheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463137/

相关文章:

iphone - 使用 RemoteIO 和 Audio Unit 播放音频文件

ipad - UISplitViewController - 在景观问题中在详细 View Controller 上呈现模态视图 Controller

ipad - 如何将 adbannerview 添加到 UISplitviewController

ios - 无法识别NSJSONSerialization

ios - 是否可以检测 facebook/gmail 横幅/警报通知

ios - 根据第二个数组顺序对数组进行排序

iphone - 如何将 NSUndoManager 与 UIImageView 或 CGContext 一起使用

iphone - UIWebView - 自动调整大小,以便不需要滚动(在 webView 本身中)

swift - iOS 14 UISplitViewController(侧边栏)与三栏侧边栏切换图标行为

objective-c - 尝试从 Xcode 4.2 中的外部 Controller 访问属性时出现错误