要約

 ジェスチャリコグナイザのデリゲートはジェスチャリコグナイザの振る舞いの微調整のためにUIGestureRecognizerDelegateプロトコルを採用する必要があります。デリゲートはジェスチャリコグナイザからメッセージを受けてレスポンスを送ることで、ジェスチャリコグナイザの動作に影響を与えたり、他のジェスチャリコグナイザとの関係を指定することができます。例えば、同時のジェスチャ認識を許可したり、逆に他のジェスチャの失敗を要求したりします。


タスク

ジェスチャ認識の統制

  •     – gestureRecognizerShouldBegin:
  •     – gestureRecognizer:shouldReceiveTouch:

同時認識の管理

  •     – gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

失敗要求のセッティング

  •     – gestureRecognizer:shouldRequireFailureOfGestureRecognizer:
  •     – gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:



 
インスタンスメソッド

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

デリゲートにgestureRecognizerがotherGestureRecognizerによって失敗を要求されるか訪ねます。このメソッドはジェスチャ認識の度によばれるので、失敗の要求基準は緩めにするべきで、またビュー階層の異なるジェスチャリコグナイザに対して行うべきです。YESを返すことで、二つのジェスチャリコグナイザ間で動的な失敗要求ができます。デフォルトの戻り値はNOです。つまり全てのジェスチャリコグナイザは他のジェスチャリコグナイザから失敗を要求されません。YESを返したとき失敗要求をすることが保証される一方で、NOを返したとき失敗要求がされないことを保証するわけではないことに留意して下さい。なぜなら、otherGestureRecognizer側のサブクラス又はデリゲートメソッドで、失敗要求をするかもしれないからです。


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

デリゲートにgestureRecognizerがtouchを受け取るか訪ねます。YES(デフォルト値)を返すとジェスチャリコグナイザがタッチを検査することを許可します。NOを返すと、ジェスチャリコグナイザがタッチオブジェクトを受け取ることはできません。このメソッドは、新たなタッチに対してジェスチャリコグナイザのtouchesBegan:withEvent:が呼ばれる前に、呼ばれます。


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

デリゲートに、渡される二つのジェスチャリコグナイザが同時に認識されるか訪ねます。YESを返すと二つのジェスチャリコグナイザは同時に認識されます。デフォルト値はNOでいかなるジェスチャも同時には認識されません。このメソッドはgestureRecognizerあるいはotherGestureRecognizerがもう一方のジェスチャ認識を妨げようとするとき呼ばれます。YESを返すと同時認識が保証される一方で、NOを返しても同時認識がされないことを保証するわけではないことに留意して下さい。なぜならもう一方のジェスチャリコグナイザのデリゲートがYESを返すかもしれないからです。


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

デリゲートに、ジェスチャリコグナイザが他のジェスチャリコグナイザに失敗を要求するか訪ねます。このメソッドはジェスチャ認識の度によばれるので、失敗の要求基準は緩めにするべきで、またビュー階層の異なるジェスチャリコグナイザに対して行うべきです。YESを返すことで、二つのジェスチャリコグナイザ間で動的な失敗要求ができます。デフォルトの戻り値はNOです。つまり全てのジェスチャリコグナイザは他のジェスチャリコグナイザに失敗を要求しません。YESを返したとき失敗要求をすることが保証される一方で、NOを返したとき失敗要求がされないことを保証するわけではないことに留意して下さい。なぜなら、otherGestureRecognizer側のサブクラス又はデリゲートメソッドで、失敗要求をするかもしれないからです。


- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

デリゲートに、ジェスチャリコグナイザがタッチを翻訳し始めていいか訪ねます。YES(デフォルト値)を返すとジェスチャリコグナイザにタッチの翻訳を続行するよう伝えます。NOを返すとジェスチャ認識を阻止させます。このメソッドはUIGestureRecognizerStatePossible状態から変わるときに呼ばれます。NOを返すとUIGestureRecognizerStateFailed状態に遷移します。