ios - 如何快速关闭弹出窗口

标签 ios swift popover dismiss

我的 iPad 应用程序有几个数据收集弹出窗口,我希望能够通过触摸它的外部来禁用弹出窗口的关闭,然后我将使用一个按钮退出弹出窗口,由用户自行决定。

该应用程序看起来很棒,弹出窗口工作正常,我在其中有一个按钮可以很好地退出。只是我找不到在 Swift 中禁用解雇的方法,obj-c 上有很多帖子,但 Swift 中没有。

这是否意味着该功能不再可用?

我将不胜感激对我的挫败感的任何帮助。

最佳答案

只需将 View Controller 的 modalInPopover 设置为 true 并将 popover 的 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? .

关于ios - 如何快速关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944684/

相关文章:

ios - RxSwift 无法识别订阅方法

ios - 如何在 UISlider 中启用 "tap and slide"?

ios - 使用 Alamofire + SwiftyJSON 无法将数据加载到 UITableView

button - 在 data-toggle 中设置两个元素,modal 和 popover

jquery - 我可以使用一些功能而不是完整的插件来完成 Bootstrap Popover 的功能吗?

iphone - 如何在 iPhone sdk 中将 HTML 页面附加到我的邮件编辑器?

swift - 将cookie插入WKWebView

ios - 长时间后重新验证登录用户

ios - 如何将代码执行移至主队列

javascript - 如何根据屏幕尺寸更改 Angular JS 中的弹出框位置?