需求:自定義一個(gè)提示框,添加一個(gè)全屏的透明遮罩層,點(diǎn)擊遮罩層提示框隱藏消失,點(diǎn)擊提示框不做響應(yīng)。
問(wèn)題:在遮罩層正常添加點(diǎn)擊手勢(shì)的話,子視圖同樣也會(huì)響應(yīng)父視圖的手勢(shì)。我們需要隔絕父視圖的手勢(shì)。
解決:UIGestureRecognizer簽訂代理UIGestureRecognizerDelegate
實(shí)現(xiàn)代理方法:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
}
在代理方法中處理視圖是否響應(yīng)手勢(shì)。
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
}