Ios UIPopoverPresentationController在iPhone上显示全屏模式

Ios UIPopoverPresentationController在iPhone上显示全屏模式,ios,objective-c,iphone,uimodalpresentationstyle,Ios,Objective C,Iphone,Uimodalpresentationstyle,在iPad上,UIPopoverPresentationController工作正常,但在iPhone上,它总是显示完整的窗口模式弹出窗口。我正在使用以下代码: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MySecondViewController *contentVC = [storyboard instantiateViewControllerWithIdentifier:

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

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;
}
Popover控制器仅用于iPad设备。

编辑:正如Soberman所说,由于iOS 8可以使用公共API在iPhone上显示弹出窗口,所以这个答案可能不再相关

正如苹果关于UIPopoverController的文档中所述:

Popover控制器仅用于iPad设备。 不幸的是,在iPhone应用程序中无法使用此类。但是,UIPopoverController提供的功能有两个自定义的第三方实现,它们添加了iPhone支持等功能。例如,见


编辑:对于iPhone/iPad,还有另一个高度可定制的popover实现,值得一看:。

在ViewController中。h首先创建UIPopOverpresationController的属性

 @property(nonatomic,retain)UIPopoverPresentationController *dateTimePopover8;
然后显示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];
你们一定注意到了,我们展示的是视图控制器,而不是popOver。所以我们也必须以新的方式隐藏它。当我们点击屏幕时,它会自动隐藏

-(void)hideIOS8PopOver
{
    [self dismissViewControllerAnimated:YES completion:nil];
}
我们必须在实现文件中实现UIPopOverpresationController的委托。请在实现文件中写下委托方法

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

谢谢你的回答,当然。谢谢如果你认为这个问题对别人也有帮助,请投赞成票。谢谢。你问的问题很老,但不管怎样,我现在就去问