需求:自定義一個提示框,添加一個全屏的透明遮罩層,點擊遮罩層提示框隱藏消失,點擊提示框不做響應。
問題:在遮罩層正常添加點擊手勢的話,子視圖同樣也會響應父視圖的手勢。我們需要隔絕父視圖的手勢。
解決:UIGestureRecognizer簽訂代理UIGestureRecognizerDelegate
實現(xiàn)代理方法:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
}
在代理方法中處理視圖是否響應手勢。
let tap = UITapGestureRecognizer(target: self, action: #selector(clickTapAction))
tap.delegate = self
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if (touch.view?.isDescendant(of: self.backView))! {
return false
}
return true
}