单击外部弹出框时如何防止 UIPopoverPresentationController 被关闭?
How to prevent UIPopoverPresentationController from being dismissed when clicking outside popover?
在我的通用 iOS 8 应用程序中,我使用 UIPopoverPresentationController
呈现弹出窗口,如下所示 prepareForSegue
:
FavoriteNameViewController *nameVC = segue.destinationViewController;
UIPopoverPresentationController *popPC = nameVC.popoverPresentationController;
popPC.delegate = self;
并使用此委托方法。
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone;
}
在这种特殊情况下,我展示了一个看起来像警报但实际上不是警报的视图控制器。
现在我的问题是,用户可以单击此弹出窗口之外的地方,它会被关闭。这没有什么真正的问题,只是警报不是这样工作的,我希望它能模拟警报。
我看到 UIPopoverControllerDelegate
有一个叫做 popoverControllerShouldDismissPopover:
的方法,但是 UIPopoverPresentationControllerDelegate
没有那个方法,我想我需要使用后者。
在您的视图中尝试以下操作
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return YES;
}
您需要将弹出控制器的 passthroughViews
设置为 nil
并将视图控制器的 modalInPopover
设置为 YES。
在我的通用 iOS 8 应用程序中,我使用 UIPopoverPresentationController
呈现弹出窗口,如下所示 prepareForSegue
:
FavoriteNameViewController *nameVC = segue.destinationViewController;
UIPopoverPresentationController *popPC = nameVC.popoverPresentationController;
popPC.delegate = self;
并使用此委托方法。
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone;
}
在这种特殊情况下,我展示了一个看起来像警报但实际上不是警报的视图控制器。
现在我的问题是,用户可以单击此弹出窗口之外的地方,它会被关闭。这没有什么真正的问题,只是警报不是这样工作的,我希望它能模拟警报。
我看到 UIPopoverControllerDelegate
有一个叫做 popoverControllerShouldDismissPopover:
的方法,但是 UIPopoverPresentationControllerDelegate
没有那个方法,我想我需要使用后者。
在您的视图中尝试以下操作
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return YES;
}
您需要将弹出控制器的 passthroughViews
设置为 nil
并将视图控制器的 modalInPopover
设置为 YES。