質問

uiscrollviewを最初のレスポンダーにしました。タッチイベントを維持する必要があります -touchesEnded:withEvent: その背後にあるビューの方法。使用しようとしました -nextResponder 方法とそれは失敗しました。転送を試みました -touchesEnded:withEvent: その背後にあるビューに、それは失敗します。

これを機能させるにはどうすればよいですか? uiscrollviewは、最初の応答者であるか、他の方法でイベントを取得しない限り、機能しません。

助けてくれてありがとう。恥ずかしいAppleのドキュメントとAPIは、地域でひどいです。

役に立ちましたか?

解決

UIScrollView ハンドルは少し珍しい方法でタッチをします。クラスの参照から:

スクロールビューにはスクロールバーがないため、タッチがサブビューをコンテンツのサブビューを追跡する意図と対象となるかどうかを知る必要があります。この決定を行うために、タイマーを起動し、タイマーが発射する前にタッチダウンイベントを一時的に傍受し、触る指が動きをするかどうかを確認します。タイマーが位置を大幅に変更せずに発射する場合、スクロールビューはコンテンツビューの触れられたサブビューに追跡イベントを送信します。ユーザーがタイマーが経過する前に指を十分にドラッグした場合、スクロールビューはサブビューのトラッキングをキャンセルし、スクロール自体を実行します...

Scroll Viewのコンテンツビュー内のサブビューは、最終的にスクロールビューの非スクロールタッチを受け取ります。

スクロールビューの監督は、タッチイベントをそのものとして見ることはまずありません -hitTest:withEvent: スクロールビューを返して、タッチイベントがスクロールビューに送信されるため、レスポンダーチェーンを親ビューに転送する必要はありません。

ファーストレスポンダーはタッチイベントの配信に影響を与えません。 http://developer.apple.com/library/ios/documentation/eventhandling/conceptual/eventhandlingiphoneos/eventsiphoneos/eventsiphoneos.html#//aple_ref/doc/uid/tp40009541-ch2-sw5

最初のレスポンダーは、タッチイベント以外のイベントの最初の受信者であると指定されているアプリケーション(通常はUIViewオブジェクト)のレスポンダーオブジェクトです...

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