【问题标题】:How to dismiss a popover only with a button in swift如何仅使用 swift 中的按钮关闭弹出框
【发布时间】:2015-09-05 19:44:56
【问题描述】:

我的 iPad 应用程序有几个数据收集弹出框,我希望能够通过触摸它的外部来禁用弹出框的关闭,然后我将使用一个按钮来根据用户的判断退出弹出框。

该应用程序看起来很棒,弹出框运行良好,并且我在其中有一个按钮可以很好地退出。只有我找不到在 Swift 中禁用解雇的方法,在 obj-c 上有很多帖子,但在 Swift 中没有。

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

如果能帮助我解决我的挫败感,我将不胜感激。

【问题讨论】:

    标签: ios swift popover dismiss


    【解决方案1】:

    只需将视图控制器的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?

    【讨论】:

    • 谢谢你,马特,这是一个很大的帮助。延迟功能是一个不错的小奖励。但是代码现在保持不变,我有一个退出按钮可以关闭。没有什么比在收集 10 项数据时意外退出视图更糟糕的了。
    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 2012-12-28
    • 2014-02-26
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多