Swift UIcollectionView、UItableView列クリックイベントとUItapGestureRecognizerクリックイベントの競合処理
1183 ワード
本稿では,実際のテストにより,Swift UIcollectionView,UItableView列クリックイベントとUItapGestureRecognizerクリックイベントとの衝突問題を解決し,親測が有効である.
UITAPGestureRecognizerイベントを追加して依頼を指定し、shouldReceivetouch依頼で判断処理を行い、要求を満たしてtrueを返し、そうでなければfasleを返します.参照コードは次のとおりです.
1、イベント指定依頼の追加
2、委託の実現
上記のコードは、多くの関連ブログを参考にして、試してみました.同行者に回り道を少なくさせるため
UITAPGestureRecognizerイベントを追加して依頼を指定し、shouldReceivetouch依頼で判断処理を行い、要求を満たしてtrueを返し、そうでなければfasleを返します.参照コードは次のとおりです.
1、イベント指定依頼の追加
let tapAction = UITapGestureRecognizer.init(target: self, action: #selector(hideKeyBoardAction(sender:)))
tapAction.delegate = self
self.view.addGestureRecognizer(tapAction)
2、委託の実現
//MARK: - UIGestureRecognizerDelegate
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
let touchClass = NSStringFromClass((touch.view?.classForCoder)!)
let supClass = NSStringFromClass((touch.view?.superview!.superview?.classForCoder)!)
if touchClass.hasPrefix("UITableView") || touchClass.hasPrefix("UICollectionView") ||
supClass.hasPrefix("UITableView") || supClass.hasPrefix("UICollectionView") {
return false
}
return true
}
上記のコードは、多くの関連ブログを参考にして、試してみました.同行者に回り道を少なくさせるため