UIPopoverPresentationController在iPhone上显示全屏模式 [英] UIPopoverPresentationController is showing full screen modal on iPhone

查看:432
本文介绍了UIPopoverPresentationController在iPhone上显示全屏模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在iPad UIPopoverPresentationController工作正常,但在iPhone上它始终显示完整的窗口模式弹出窗口。我使用以下代码:

On iPad UIPopoverPresentationController working fine but on iPhone it is always showing full window modal popup. i am using following code:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MySecondViewController *contentVC = [storyboard instantiateViewControllerWithIdentifier:@"Pop"];
contentVC.modalPresentationStyle = UINavigationControllerOperationPop; // 13
UIPopoverPresentationController *popPC = contentVC.popoverPresentationController; // 14
contentVC.popoverPresentationController.sourceRect =CGRectMake(100, 130, 280, 230);
self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100);
//self.showPop.frame; // 15
contentVC.popoverPresentationController.sourceView =
self.showPop; // 16
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny; // 17
popPC.delegate = self; //18
[self presentViewController:contentVC animated:YES completion:nil];

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


推荐答案

在ViewController.h中首先制作UIPopoverPresenatationController的一个属性。

In ViewController.h Firstly make a property of UIPopoverPresenatationController.

 @property(nonatomic,retain)UIPopoverPresentationController *dateTimePopover8;

然后显示PopOverPresentationcontroller

Then to show PopOverPresentationcontroller

 UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:dateVC];/*Here dateVC is controller you want to show in popover*/
            dateVC.preferredContentSize = CGSizeMake(280,200);
            destNav.modalPresentationStyle = UIModalPresentationPopover;
            _dateTimePopover8 = destNav.popoverPresentationController;
            _dateTimePopover8.delegate = self;
            _dateTimePopover8.sourceView = self.view;
            _dateTimePopover8.sourceRect = [sender frame];
            destNav.modalPresentationStyle = UIModalPresentationPopover;
            destNav.navigationBarHidden = YES;
            [self presentViewController:destNav animated:YES completion:nil];

您一定注意到我们正在呈现View Controller而不是呈现popOver.So我们必须隐藏这个当我们点击屏幕时,它会自动隐藏。

You must have noticed that we are presenting View Controller instead of presenting popOver.So we have to hide this in new way also.It hides automatically when we click on screen.

-(void)hideIOS8PopOver
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

我们必须在实现文件中实现UIPopoverPresenatationController的委托。在委托方法下面写在实现文件中。

We have to implement the delegate of UIPopoverPresenatationController in implementation file.Write below delegate method in implementation file.

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

这篇关于UIPopoverPresentationController在iPhone上显示全屏模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆