如何检测弹出框关闭

Posted

技术标签:

【中文标题】如何检测弹出框关闭【英文标题】:how to detect a popover dismiss 【发布时间】:2013-07-13 17:22:34 【问题描述】:

当一个弹出框打开时,如果你点击它就会关闭它。有可能阻止这种情况吗?基本上我有以下问题。

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

因此,如果单击关闭弹出框,则可以停止它。 或者 是否可以检测到允许调用我需要的函数。

谢谢

詹姆斯

【问题讨论】:

【参考方案1】:

可以使用这两种方法,但第二种适合你的场景:

 /* 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;

记得实现 UIPopoverdelegate 并将 Delegate 设置为 self。

【讨论】:

【参考方案2】:

假设您谈论的是当您在弹出框之外点击时弹出框的默认行为被关闭,防止这种情况的解决方案是使弹出框成为模态。

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

顺便说一句 - 如果您想检测用户何时通过点击弹出框外部来解除它,您需要实现 UIPopoverControllerDelegate 方法 popoverControllerDidDismissPopover:

【讨论】:

以上是关于如何检测弹出框关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式关闭/禁用 iOS 11 中引入的屏幕截图弹出框?

iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)

如何通过单击栏按钮关闭弹出框

关闭弹出框后如何调用函数?

XCUITest 如何关闭日期选择器弹出框

如何关闭 AirPrint Popover?