0

ビューへのタッチに関する質問があります。

タグ100のAフレーム(0,0,512,768)とタグ200のBフレーム(512,0,512,768)を含むparentView(frame is(0,0,768,1024))があります。

touches メソッドを実装しtouchesBegan:withEvent: touchesMoved:withEvent: touchesEnded:withEvent:ました。

AからBへのタッチを開始するtouchesBeganと、touchesMovedメソッドが期待どおりに起動されます

実装する必要があります:タッチが A から B に到達すると、A の touchesEnded が起動され、B のタッチが起動され、その逆も同様です。それぞれのメソッドに独自のロジックがあります。

4

2 に答える 2

1

これは意図的な動作です。通常、 [キャンセル] ボタンをタッチし、 [削除]ボタンを持ち上げたときに指が滑って[削除] ボタンに触れた場合、誤って何かを削除したくはありません。

しかし、このようにタッチを渡したいという状況がありました。@ejazz と同じように、A と B の両方を含むビューに作業を移動しtouchesBeganましtouchesMovedtouchesEnded

タッチがサブビュー上を移動すると、適切なメッセージが送信されました。サブビューのオンとオフを切り替えただけですが、必要に応じて適切なサブビューで をtouchesBegan呼び出すtouchesMovedことができるはずです。touchesEndedタッチの開始時と終了時を知る必要がある場合は、各タッチに関連付けられた以前のビューを追跡するか、そのpreviousLocationInView:メソッドを呼び出す必要があります。

于 2012-04-10T07:59:45.290 に答える
0

UIPanGestureRecognizerクラスを使用することをお勧めします。親ビューにアタッチし、デリゲートを設定します。

これで、状態と場所を追跡できます。したがって、状態がUIGestureRecognizerStateBeganAまたはBにあるUIGestureRecognizerStateEndedかどうかを確認し、状態がBまたはAにあるかどうかを確認します。

タップビューにAビューまたはBビューが含まれているかどうかを確認できます。

CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)

そして、view.frameを使用します

于 2012-04-10T07:45:31.413 に答える