GestureRecognizer を storyboard で設定するには・・・

GestureRecognizer の storyboard での設定方法。我流でやってみてもうまくいかない。まずは code を書いてみて、その後 storyboard で設定してみたらうまくいった。code と同等なことを storyboard に実装すればいいのだと。こういう試行錯誤は後になってから忘れなくていいかも。

コードで書くとこんな感じ:

    UILongPressGestureRecognizer* longPressRecognize = [[UILongPressGestureRecognizer alloc]

                                                        initWithTarget:self

                                                        action:@selector( imageLongPress )];

    longPressRecognize.minimumPressDuration = 0.33f;

    [_cookingImage addGestureRecognizer:longPressRecognize];

 

要は、UILongPressRecognizer のインスタンスを生成し、効用をもたらしたい object に addGestureRecognizer する。

これを踏まえた上で、storyboard を使った方法はこんな感じ。

  1. LongPressRecognizer を View に乗っける。すると、View の上に First Responder とかがあるところに、gesture recognizer のアイコンが表示される。
  2. gesture recognizer のアイコンから反応してほしい object に線を引いて、delegate を設定。
  3. gesture recognizer から.h に引っ張ってきて action を追加

ちなみに、gesture recognizer のプロパティも storyboard 上で設定できて、attribute inspector に設定できる項目が載っている。Long Press なら default は 0.5 であった。なんとなく、0.33 に変更した。

表現方法が違うけれども、結局、code からでも storyboard からでも設定できるんだなぁと。で、どちらがいいのかというと・・・うーん、微妙。code からの方がぱっと見、わかりやすい。でも、.m に記述が増えてくると管理がままならなくなってくるので、storyboard を使って分散化した方がいいのかな。