簡単な紹介
プロジェクトの1つで、ピンチジェスチャの方向を決定する必要がありました。 これは、軸に沿ってオブジェクトを選択的にスケーリングするために必要でした。 つまり 指が垂直方向に動く/伸びる場合、オブジェクトを垂直方向にのみ拡大縮小します。 残念ながら、UIPinchGestureRecognizerの標準ジェスチャレコグナイザーはこの情報を提供しません。 Google検索結果の最初のページを見て、既製のソリューションにつまずきませんでした。 「まあ、自分で書いてください。 さらにおもしろい:)」-私はピンチを考えて実装し始めました。
編集中
2010年7月10日-ソースコードが更新されました。 oScaleプロパティ(CGPoint)を追加しました。 個々の軸のスケーリング係数が含まれています。 UIPinchGestureRecognizerによるスケールのアナログ。
主な開発
ピンチの実行時に指の向きを決定するには、2つのサブタスクを解決する必要があります。
- ピンチジェスチャ自体を識別する
- 指の角度を決定する
最初のサブタスクに問題はありませんでした。 もう一度
ドキュメントを読んだ後、UIGestureRecognizer、つまりUIPinchGestureRecognizerに基づいてジェスチャーの「認識機能」を作成できるようになる
ずっと前から 、
すべてが完了していることを確認しました。
2番目のサブタスクの解決にも時間がかかりませんでした。 少し考えた後

私は解決策を見つけました:画面のOy軸とユーザーの指を通る線の間の角度を単純に決定します。
コードを書くためにあらゆることが行われます。 作業の結果は次のとおりです。
説明:
実装:
UIPinchGestureRecognizerとして使用
UIOrientedPinchGestureRecognizer *pinchGesture = [[UIOrientedPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)]; [pinchGesture setDelegate:self]; pinchGesture.cancelsTouchesInView=NO; [self.view addGestureRecognizer:pinchGesture];
処理中:
- (IBAction)handlePinchGesture:(UIOrientedPinchGestureRecognizer *)sender { NSLog(@"angle: %f orientation: %i scale.x:%f scale.y:%f",radToDeg(sender.angle),sender.orientation,sender.oScale.x,sender.oScale.y); }
短所:
現在、3/4などの角度の定義はありません。 指。
ソース
ご清聴ありがとうございました。