2012-04-14 14 views
3

多くのビューとボタンを作成した後、グラフィカルにISwipeGestureRecognizerを作成しました。また、レクチャー「Outlet Collection」を認識者に追加しました。そして、すべての私の見解でスワイプのジェスチャーが動作します。どのように可能ですか?ストーリーボードは、接続されたすべてのUIViewに対して自動的に異なるSwipeRecognizersを作成しますか?storyboardのUIGestureRecognizerは複数のビューを使用できますか?

私はプログラムで複数のビューを追加することはできません、なぜですか?

答えて

2

ストーリーボードの説明を一度も試したことはありません。直接回答できませんが、複数のジェスチャ認識機能が作成されているかどうかを確認する方法を提案できます。 (これはアクションメソッドに渡される最初の引数です)。このようにして、同じレコグナイザが再利用されているかどうかを確認します。

また、recognizer.viewのログを記録して、フード内で何が起こっているのかを確認します。すべてのケースで同じ結果が得られた場合は、UISwipeRecognizerが内部でviewプロパティを使用していないこと、およびアクションコールバックがその情報にアクセスできるようにその情報が格納されていることを楽観的に推測できます。

謎は、ジェスチャ認識機能が1つしかなく、viewプロパティの値が異なることです。これは、その場でプロパティ値が変更されることを意味しますが、私はどのように説明することはできません。

+0

私はこのソリューションを試しました。実際、単一ではなく複数の認識装置があります。あなたを気遣う。 – k06a

+0

あなたは大歓迎です!ストーリーボードのこの機能についてはわかりませんでした。知っておきたいこと... – sergio

0

1つのジェスチャ認識機能を、コード内またはインターフェイスビルダを使用して、必要なだけ多くのビューに追加できます。これを行うにはのaddGestureRecognizer:メソッドを使用します。レコグナイザをビューに追加することに注意してください。

+0

これを試してみるとよいでしょう。 Recognizerは、ビューが 'superview'プロパティを持っているのと同様に、理由のために' view'プロパティを持っています(単語が複数ではないことに注意してください)。 –

2

ジェスチャ認識機能をInterface Builderの複数のビューに接続することができます。タッチしたときに、すべて適切なメッセージを送信します。ただし、認識プログラムのviewプロパティを使用してどのビューに触れたかは検出できません。タッチされたビューに関係なく常に同じビューを指します。

コードで同じことをすることはできません。はい、それは奇妙です。

タッチをトリガーしたビューが気にしない限り、あなたはすべていいです。

関連する問題