如何检测一个popover dismiss

use*_*593 3 ipad uipopovercontroller ios

弹出窗口打开时,如果单击它,它将关闭.有可能阻止这个吗?基本上我有以下问题.

当弹出窗口关闭时,我需要一个要处理的函数.如果我从弹出框中设置了具有解除功能的按钮,那么我可以将该功能放入dismiss方法中,但是如果用户点击屏幕则不会检测到该功能.

如果你点击它就可以停止弹出窗口关闭.或者是否可以检测到这种情况,从而允许调用我需要的功能.

谢谢

詹姆士

rma*_*ddy 6

假设您正在谈论当您在弹出窗口外点击时弹出窗口的默认行为,防止这种情况的解决方案是制作弹出窗口模式.

为此,请在弹出窗口的内容视图控制器上将modalInPopover属性设置为YES.

顺便说一句 - 如果你想通过点击外面的UIPopoverControllerDelegate方法来检测弹出窗口何时被解除,你需要实现该方法popoverControllerDidDismissPopover:.


lak*_*esh 6

您可以使用这两种方法,但第二种方法适合您的方案:

 /* Called on the delegate when the popover controller will dismiss the popover. Return NO to prevent the dismissal of the view.
 */
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController;

/* Called on the delegate when the user has taken action to dismiss the popover. This is not called when -dismissPopoverAnimated: is called directly.
 */
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController;
Run Code Online (Sandbox Code Playgroud)

请记住实现UIPopoverdelegate并将Delegate设置为self.