【发布时间】:2015-09-05 19:44:56
【问题描述】:
我的 iPad 应用程序有几个数据收集弹出框,我希望能够通过触摸它的外部来禁用弹出框的关闭,然后我将使用一个按钮来根据用户的判断退出弹出框。
该应用程序看起来很棒,弹出框运行良好,并且我在其中有一个按钮可以很好地退出。只有我找不到在 Swift 中禁用解雇的方法,在 obj-c 上有很多帖子,但在 Swift 中没有。
这是否意味着该功能不再可用?
如果能帮助我解决我的挫败感,我将不胜感激。
【问题讨论】:
我的 iPad 应用程序有几个数据收集弹出框,我希望能够通过触摸它的外部来禁用弹出框的关闭,然后我将使用一个按钮来根据用户的判断退出弹出框。
该应用程序看起来很棒,弹出框运行良好,并且我在其中有一个按钮可以很好地退出。只有我找不到在 Swift 中禁用解雇的方法,在 obj-c 上有很多帖子,但在 Swift 中没有。
这是否意味着该功能不再可用?
如果能帮助我解决我的挫败感,我将不胜感激。
【问题讨论】:
只需将视图控制器的modalInPopover 设置为true 并将弹出框的passthroughViews 设置为nil。但是您必须使用延迟性能来执行后者,否则它将不起作用。只需要一点延迟。示例:
let vc = UIViewController()
vc.modalPresentationStyle = .Popover
self.presentViewController(vc, animated: true, completion: nil)
if let pop = vc.popoverPresentationController {
vc.modalInPopover = true
delay(0.1) {
pop.passthroughViews = nil
}
}
有关delay 函数,请参阅dispatch_after - GCD in swift?。
【讨论】: