3

ユーザーがいくつかの編集可能なテキスト ボックスをキャンバスに配置できる iPad アプリケーションに取り組んでいます。各テキスト ボックスは、1 本の指でドラッグして移動できる必要があります。ユーザーは、選択したテキスト ボックスを 2 本の指で回転できます。

2層にしたいです。上のレイヤーは、2 本の指で回転ジェスチャを受け取ります。ただし、ユーザーが 1 本の指だけで画面に触れた場合は、タッチ イベントを下層のテキスト ボックス (カスタム UIView) に渡す必要があります。これを行うことは可能ですか?

私の最初の試みは、から-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventおよび-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event使用してタッチの数を数えること[touches count]です。タッチ数が 2 の場合、回転を実行します。1 回のタッチの場合は、すべてのテキスト ボックスを「ループ」して、タッチがどのテキスト ボックス内にあるかを確認し、そのボックスの移動を実行します。

これを行うより良い方法はありますか?テキスト ボックスがたくさんある場合、ループは問題になりますか?

ところで、私はスタックオーバーフローが初めてです。私の質問があいまいすぎるかどうか教えてください。より明確に説明するように努めます。

ご協力いただきありがとうございます。

4

1 に答える 1

0

UIRotationGestureRecognizer回転にはUIPanGestureRecognizer with maxNumberOfTouches = 1を、ドラッグには を使用できます。

UIGesturesRecognizers は、単純なタッチ API よりも扱いが簡単です。ジェスチャ認識は、主にステート マシンの問題です (タッチはどこにあるのか、以前はどこにあったのか、まだ有効なのか、これまでにどのようなジェスチャ特性を持っているのか)。メソッドなどを介していくつかのジェスチャを処理する-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventと、すぐに地獄のような状態になる可能性があります!

于 2013-02-06T14:22:27.050 に答える