私はUICollectionViewController
セルの束をレイアウトするクラスを持っています。touchesBegan
ユーザーがセルに触れたとき、最初のタッチでセルの選択が完了するまで、このメソッドを使用して新しいタッチを防止したいと考えています。
ビューコントローラーに次のコードを入れてみましたが、呼び出されません。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
print("touches began")
}
ただし、プロジェクトの他の場所には、のサブクラスである別のクラスがありUIViewController
ます。そこで、touchesBegan
次のコードを使用して、そのクラスのテキスト ビューのキーボードを閉じると、そのコードは問題なく呼び出されます。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
view.endEditing(true)
}
このコードがあるクラスでは機能し、他のクラスでは機能しないのはなぜですか? また、コレクション ビュー セルへのタッチを検出するためにtouchesBegan
in myを使用するにはどうすればよいですか? UICollectionViewController
Swiftでの解決策をいただければ幸いです。御時間ありがとうございます!
調査: このソリューションをチェックアウトしました: UiCollectionView で Touch を処理しますか? しかし、答えは主にその特定のプロジェクトに当てはまります。
ジェスチャ認識エンジンを使用して実行しようとしましたが、ジェスチャ認識エンジンはに対してのみ起動self.collectionView?.userInteractionEnabled = false
しません。そのため、それ以上の接触を防ぐために使用できませんでした。selector.state == .Began
.Ended
私もUILongPressGestureRecognizer
同じことをしようとしましたが、そのジェスチャはコレクション ビュー セルがリッスンするデフォルトのタップ ジェスチャを妨げるため、セルの通常のタップは受信されず、セルを選択できません。
元の質問には回答していませんが、回答として回避策を投稿しました。