Gesture Recognizer で円形ジェスチャーを検出するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4600690

質問

ボリュームコントロール風の丸いボタンを実装しようとしています。現在、Gesture Recognizer によってスワイプを検出できます。ボタン上の円形ジェスチャ (時計回りと反時計回り) を検出するにはどうすればよいですか?ありがとう!

役に立ちましたか?

解決

ワンタッチ ジェスチャ (円形のスライダーなど) をお探しですか、それとも 2 タッチ ジェスチャ (現実世界のノブをつかんで回すなど) をお探しですか?後者の場合は、こちらをご覧ください UIRotationGestureRecognizer.

前者の場合、あなたはほぼ一人でいます。確かに、独自のカスタム ジェスチャ認識エンジンとしてソリューションを実装できます。これは Apple が期待していることですが、 始めるためのドキュメント (ただし、実用的な例はあまり見たことがありません)。こちらも参照 UIGestureRecognizerを正しくサブクラス化する方法.

一般的なアプローチとして、ジェスチャの領域をドーナツ形状として考えます。中心のあるゾーン c, 、内半径 r1, 、外半径 r2. 。ユーザーがタッチダウンすると、からの距離を計算できます。 c ピタゴラスの定理を使用し、好みの三角関数で角度を設定します。これにより、タッチがゾーン内にあるかどうかを判断できます。ユーザーがドラッグすると、角度に基づいてコントロール値を更新できます。ある時点で、タッチアップするか、ゾーンの外にドラッグすると、ジェスチャが終了します。タッチがかなり内側に逸れるようにすることをお勧めします r1 または外側 r2:指は不正確な道具です。

他のヒント

は解決策を見つけることができない、と@ sixtenの答えから論理インスピレーションによって、私は有益な何かを行っおよび作成してきたように、それは弾丸の証拠はないが、私が今のために必要なものを行うようです。

は、誰もが、クローンは、それは、それを改善し、それを使用し、それをフォークしてください、それはオープンソースですが、ここに私のレポのリンクです。

https://bitbucket.org/danielphillips/dpcirculargesturerecognizer

あなた自身のジェスチャー認識を書いてみましたか?ドキュメントでの詳細な手順があります。

の最善の方法は、カスタムジェスチャー認識器を実装することになります。あなたは秘密のジェスチャーを検出したい(完全な円が検出された後、イベント処理メソッドが呼び出されます)または(メソッドをイベント処理を使用して、円形経路上で指を動かすたびに呼び出されます)ジェスチャーを続けた場合、私は知りません。

おそらく、ユーザーは完全な円を描くないかもしれない、と@Sixtenオットーが提供するソリューションが良いでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top