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
        }
    }
}
相關文章
相關標籤/搜索