Swift Popover不恰当地关闭iPhone 8 Plus



在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做到了,并且预示着,应用程序开始正常运行。

这是一个非常奇怪的问题;我从来没有听说过这样的事情!

最新更新