UITapGestureRecognizer 和 UIBarButtonItem.action 事件冲突

我的未来我决定 提交于 2019-12-06 18:25:53

#UITapGestureRecognizer 和 UIBarButtonItem.action 事件冲突

UITapGestureRecognizer在整个UIView上 UIToolbar在UIView上

###解决方案

实现 UIGestureRecognizerDelegate ,并设置 UITapGestureRecognizer 的 delegate

extension XXXX: UIGestureRecognizerDelegate {
    // MARK: UIGestureRecognizerDelegate

    /*
    此方法在window对象在有触摸事件发生时,
    调用gesture recognizer的touchesBegan:withEvent:方法之前调用,
    如果返回NO,则gesture recognizer不会看到此触摸事件。(默认情况下为YES).
    */
    func gestureRecognizer(
	    gestureRecognizer: UIGestureRecognizer, 
	    shouldReceiveTouch touch: UITouch
    ) -> Bool {
        /*
         UIView ---> UIToolbar ---> UIBarButtonItem ---> action
         touch.view is UIToolbarTextButton
         touch.view?.superview is UIToolbar
         */
        if touch.view?.superview is UIToolbar {
            return false
        }else{
            return true
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!