3本指のピンチジェスチャーを作る 1

画像の拡大縮小で頻繁にピンチジェスチャー(UIPinchGestureRecognizer)を使うと思いますが、
通常の2本指ではなく3本指で操作したいと思いカスタムジェスチャーを作ってみました。

その作り方を公開したいと思います。

ジェスチャーの仕様は次の通り
・クラス名は ThreeFingersPinchGestureRecognizer
・3本指でジェスチャーを認識し始める
・3点間の距離の合計が変化した割合をプロパティ scale として示す

まずは、カスタムジェスチャーの基本から
カスタムジェスチャーの作り方は意外と簡単で、UIGestureRecognizer を継承して下記の5メソッドをオーバーライドすればOK

- (void)reset;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

それぞれ必要なことは

reset
ジェスチャーの状態を初期状態に戻す。
今回の実装ではプロパティscaleを初期値に戻します。

touchesBegan
ジェスチャーの開始判定を行います。
今回はタッチの数が3点であるか判定します。
また、scaleを算出するために開始時点のタッチポイント間の距離を求めます

touchesMoved
タッチ位置の変更に対しての処理を行います。今回はtouchBeganで求めたタッチポイント間の距離と今の距離からプロパティscaleを算出します

touchesEnded
ジェスチャーの終了処理

touchesCancelled
キャンセルされた場合の処理

あ、それと <UIKit/UIGestureRecognizerSubclass.h>をインポートしておく必要があります。

それぞれの詳細は次回で。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です