我有一个自定义的PresentationViewController
,它具有半屏尺寸高度和全屏尺寸宽度。
我想按PresentationViewController
外部将其关闭。
我尝试在ViewController下添加一个按钮,但是从未调用此按钮的动作。
我还尝试在PresentationViewController
中添加一个具有等于view.frame
的帧的按钮,并为touchUpOutside
发送一个动作,此按钮的动作也不会被调用。
那么如何消除这个PresentationViewController
最佳答案
将手势识别器添加到视图的窗口
对于Swift3
var recognizer = UITapGestureRecognizer(target: self, action: #selector(yourViewController.handleTap(_:)))
recognizer.numberOfTapsRequired = 1
recognizer.cancelsTouchesInView = false
self.view.window?.addGestureRecognizer(recognizer)
然后像这样调用函数
func handleTap(_ sender: UITapGestureRecognizer) {
if sender.state == .ended {
var location: CGPoint = sender.location(in: nil)
if !self.view.point(inside: self.view.convertPoint(location, from: self.view.window), withEvent: nil) {
self.view.window?.removeGestureRecognizer(sender)
self.dismiss(animated: true, completion: nil)
}
}
}
对于 objective-c ,您可以从here获取参考