1

我想在顶级应用程序上显示一个 ViewController,所以我使用下面的代码

let nextStoryBoard = UIStoryboard(name: "Menu", bundle: nil)
let menu = nextStoryBoard.instantiateViewControllerWithIdentifier("MenuView") as! MenuPanelViewController

UIApplication.sharedApplication().keyWindow?.rootViewController!.getTopViewController().modalPresentationStyle = .FullScreen

UIApplication.sharedApplication().keyWindow?.rootViewController!.getTopViewController().presentViewController(menu, animated: false, completion: nil)

当我在 iPhone 6s/6s+/7/7+ 上使用 xCode 7 时,一切都很好,当我将 xCode 更新到 8.1 时,我无法使用 tapRecognizer。

我认为我的问题与上述设备上的 3D Touch 有关。

4

1 回答 1

0

请检查您的 getTopViewontroller() 返回是否正确。

这是我用来查找最常见的视图控制器的方法。

extension UIApplication {
    class func topViewController() -> UIViewController {
        return UIApplication.topViewController(base: nil)
    }
    class func topViewController(base: UIViewController?) -> UIViewController {
        var baseView = base
        if baseView == nil {
            baseView = (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController
        }
        if let vc = baseView?.presentedViewController {
            return UIApplication.topViewController(base: vc)
        } else {
            return baseView!
        }
    }
}
于 2016-11-21T09:45:34.223 回答