在外面打击时防止弹出解雇(斯威夫特)

时间:2016-08-30 19:44:40

标签: ios swift popover

我试图阻止弹出窗口在用户点击弹出窗口之外时被解雇。我似乎有关于此的其他问题/答案,他们似乎都建议使用modalInPopover作为视图。我已经在viewDidAppear中完成了这个,正如我所看到的那样。我有文本字段以及根据下拉菜单中的选项填充标签的按钮。在输入任何信息之前,它工作正常,并且在外部敲击时弹出窗口不会被解除。它也可以在文本字段中输入文本时正常工作。但是,只要在点击其中一个按钮后从下拉列表中进行选择,弹出窗口就会在触摸它之后解除。

对于为什么会这样,还有其他建议吗?它可能与在文本字段上调用resignFirstResponder有关吗?

4 个答案:

答案 0 :(得分:8)

在swift 3中,ios 10

在实现UIPopoverPresentationControllerDelegate之后,以下函数似乎可以解决问题。

func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
    return false
}

我希望如果有人仍在寻找解决方案,这会有所帮助。

答案 1 :(得分:1)

您可以实施UIPopoverControllerDelegate

func popoverControllerShouldDismissPopover(popoverController: UIPopoverController) -> Bool {
    //return true when you need
    return false
}

这在iOS 9.0中已弃用,但如果您有支持iOS 8的项目,则必须使用它。

让我知道它是否适合您

答案 2 :(得分:0)

更新: 使用UIPopoverPresentationControllerDelegate

func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
        return false
    }

答案 3 :(得分:0)

  

显示时,在弹出式窗口的外部点击会导致弹出式窗口自动关闭。为了允许用户与指定的视图进行交互而不会关闭弹出窗口,可以将一个或多个视图分配给passthroughViews属性。弹出窗口内的水龙头不会自动导致弹出窗口被关闭。您的视图和视图控制器代码必须显式处理弹出框内的动作和事件,并根据需要调用dismiss(animated :)方法。

docs