多くのビューとボタンを作成してから、ISwipeGestureRecognizer をグラフィカルに作成しました。そして、レコグナイザー「リファレンス アウトレット コレクション」に多くのビューを追加しました。また、スワイプ ジェスチャはすべてのビューで機能します。それはどのように可能ですか?ストーリーボードは、接続された UIView ごとに異なる SwipeRecognizer を自動的に作成しますか?
プログラムでビューを追加できません。なぜですか?
多くのビューとボタンを作成してから、ISwipeGestureRecognizer をグラフィカルに作成しました。そして、レコグナイザー「リファレンス アウトレット コレクション」に多くのビューを追加しました。また、スワイプ ジェスチャはすべてのビューで機能します。それはどのように可能ですか?ストーリーボードは、接続された UIView ごとに異なる SwipeRecognizer を自動的に作成しますか?
プログラムでビューを追加できません。なぜですか?
ストーリーボードであなたが説明したことを試したことがないので、直接答えることはできませんが、複数のジェスチャ認識エンジンが作成されているかどうかを確認する方法を提案できます: ジェスチャ アクション メソッドでNSLog
、認識エンジンのアドレスをログに記録するステートメントを追加します (このアクションメソッドに渡される最初の引数です)。このようにして、同じ認識エンジンが再利用されているかどうかを確認します。
また、recognizer.view
プロパティをログに記録して、フードの下で何が起こっているかを確認します。すべてのケースで同じ結果が得られた場合、 はUISwipeRecognizer
そのプロパティを内部的に使用しておらずview
、その情報はアクション コールバックがアクセスできるようにするためだけに保存されていると楽観的に推測できます。
なぞなぞは、ジェスチャ レコグナイザが 1 つしかなく、view
プロパティの値が異なることです。これは、プロパティ値がその場で変更されることを意味しますが、その方法を説明することはできません。
ジェスチャ レコグナイザーを Interface Builder の複数のビューに接続できます。それらはすべて、触れると適切なメッセージを送信します。ただし、レコグナイザーのビュー プロパティを使用して、どのビューがタッチされたかを検出することはできません。タッチされたビューに関係なく、常に同じビューを指します。
コードで同じことができるとは思いません。はい、それは奇妙です。
したがって、どのビューがタッチをトリガーしたかを気にしない限り、問題ありません。