在modal viewcontroller外点击屏幕dismiss

来源:互联网 发布:淘宝开店需要押金吗? 编辑:程序博客网 时间:2024/06/08 13:28

自定义转场动画,弹出modalViewController,然后点击周围可以dismiss掉。
我的实现方法是:给self.view.window添加一个tap,在手势的代理中判断点击是否在controller内。

let tap = UITapGestureRecognizer(target: self, action: #selector(你的响应方法,实现为空即可))    override func viewDidAppear(_ animated: Bool) {        super.viewDidAppear(animated)        tap.delegate = self        self.view.window?.addGestureRecognizer(tap)    }    override func viewWillDisappear(_ animated: Bool) {        super.viewWillDisappear(animated)        tap.delegate = nil        self.view.window?.removeGestureRecognizer(tap)    }

实际的操作在这里:

extension XZBasicViewController: UIGestureRecognizerDelegate {    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {        let point = gestureRecognizer.location(in: self.view)        if !self.view.point(inside: point, with: nil) {            self.navigationController?.dismiss(animated: true, completion: {            })            return true        }        return false    }}
阅读全文
0 0
原创粉丝点击