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