iOS8 上的 UIPopoverPresentationController 始终全屏显示

Posted

技术标签:

【中文标题】iOS8 上的 UIPopoverPresentationController 始终全屏显示【英文标题】:UIPopoverPresentationController on iOS8 always shows in fullscreen 【发布时间】:2014-09-19 07:10:31 【问题描述】:

当您按下自定义视图上的按钮时,我想在 ios8 上显示 (width: 200, height:300) 弹出框。当我这样做时,我将弹出窗口作为全屏弹出窗口。 (委托也不起作用。它不会调用prepareForPopoverPresentation 等...

如何正确显示宽度为 200、高度=300 的弹出框以及委托未调用的问题是什么?

-(void)buttonPressed:(UIView*)sender
    CGRect rect=[self convertRect:sender.frame fromView:sender.superview];

    rect.origin.y-=10;

    rect.size.width=60;
    rect.size.height=60;

    self.stViewController=[[STViewController alloc]init];


    self.stViewController.view.frame=CGRectMake(0, 0, 200, 300);

    self.stViewController.modalPresentationStyle=UIModalPresentationPopover;
    self.stViewController.preferredContentSize = CGSizeMake(200,300);

    if (self.stViewController.popoverPresentationController)
    
        self.stViewController.popoverPresentationController.delegate=self;
        self.stViewController.popoverPresentationController.sourceView=self.superview;
        self.stViewController.popoverPresentationController.sourceRect=rect;
        self.stViewController.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight;

        [[(AppDelegate*)[UIApplication sharedApplication].delegate mainViewController] presentViewController:self.stViewController animated:YES completion:nil];
    

【问题讨论】:

【参考方案1】:
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
    return UIModalPresentationNone;

【讨论】:

这可行,但我必须在每次呈现视图控制器时再次设置委托(配置了弹出框) 当弹出框被解除或即将被解除时,您可能将委托设置为 nil。

以上是关于iOS8 上的 UIPopoverPresentationController 始终全屏显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 上的应用扩展限制

iOS8 上的 Instagram

iOS8+ UIScreen 上的 -nativeScale 和 -scale 有啥区别?

iOS8上的iPhone界面方向

iOS8上的tableview行高错误

IOS8上的HTML按钮元素单击失败