在iPhone 8 Plus上,每次用户触摸视图内部(例如当用户触摸视图控制器中的按钮时(,弹出框视图控制器都会关闭,当用户触摸视图外部时(当我们期望它关闭时(,则没有任何反应。在针对iPhone 6s和几台iPad进行测试时,该应用程序的行为符合预期。
弹出框是使用以下 Swift 代码以编程方式创建的:
let selectionViewController = SelectionTableViewController()
selectionViewController.modalPresentationStyle = .popover
selectionViewController.preferredContentSize = CGSize(width: 200, height: 300)
let popoverViewController = selectionViewController.popoverPresentationController
popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection.up
popoverViewController?.delegate = self
popoverViewController?.sourceView = self.titleView
popoverViewController?.sourceRect = self.titleView.bounds
self.present(selectionViewController, animated: true, completion: nil)
此外,自适应演示样式也进行了调整,以保持 iPhone 上与 iPad 上一致的行为:
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
编辑:我添加了应用程序的简化版本,该应用程序正在向 github 重新创建问题:https://github.com/Brandogs/PopoverIssue
事实证明,这个特殊的模拟器只是被灌了软管。我在评论中推荐了这个:
尝试实际删除此模拟器并创建一个全新的模拟器。事实上,我经常删除所有模拟器并重新创建它们,尤其是在 Xcode 更新之后。
OP做到了,并且预示着,应用程序开始正常运行。
这是一个非常奇怪的问题;我从来没有听说过这样的事情!