单击外部弹出框时如何防止 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。