UITapGestureRecognizer 和 UIBarButtonItem.action 事件冲突

#UITapGestureRecognizer 和 UIBarButtonItem.action 事件冲突code

UITapGestureRecognizer在整个UIView上 UIToolbar在UIView上对象

###解决方案事件

实现 UIGestureRecognizerDelegate ,并设置 UITapGestureRecognizer 的 delegateit

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
        }
    }
}
相关文章
相关标签/搜索