我想在顶级应用程序上呈现一个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有关。
答案 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!
}
}
}