无法在TopViewController XCode 8.1,iphone6s / 6s + / 7/7 +上点击呈现的ViewController

时间:2016-11-21 07:38:57

标签: ios iphone swift uitapgesturerecognizer xcode8.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)

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

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

1 个答案:

答案 0 :(得分: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!
        }
    }
}