2017-08-06 4 views
0

私のUIViewの構造を並べ替えた後、私は描画に遅延をもたらしたようです(ユーザーは指で画面に描画できます)。描画の開始前は無視できたが、今では指の最初の動きと線の描画との間に顕著な遅延がある。私が描くままにすると、レイテンシーは消えているようです。したがって、初期タッチイベントがどこかで遅延する可能性があります。iOSで一番早い登録タッチイベント

私の質問は、この特定のインスタンスを解決する方法ではありませんが、診断で私は次の質問に遭遇しました:私は画面の(接触の開始の時間)を登録できる最も早い点は何ですか?

すべてのUIResponders(UIWindow - > UIView - > ... - > DrawingView)でタイムスタンプをhitTestに配置しました。しかし、UIWindowのhitTestへの最初の呼び出しの前に遅延が存在する可能性がありますか?

ありがとうございます!

答えて

1

UIWindowは、イベントをビューに直接配信する前にジェスチャ認識器にタッチイベントを配信します。これは-[UIWindow sendEvent:]https://developer.apple.com/documentation/uikit/uiwindow/1621614-sendevent)の内部で発生します。私はそれがイベントに興味があるかもしれないジェスチャ認識プログラムを見つけるためにビュー階層をヒットテストすると信じているので、hitTest:withEvent:メッセージが遅れるのを期待するべきではありません。

ビューまたはそのスーパービューのいずれかにジェスチャ認識機能がある場合は、that gesture recognizer can delay the delivery of touch eventsです。

UIKitの標準ビューの多くはジェスチャ認識機能を使用しています。特にUIScrollView uses gesture recognizers that can delay touch eventsであり、UITableViewUICollectionViewの両方がUIScrollViewのサブクラスである。

+0

ありがとうございました。だから私は、おそらくhitTestシーケンスとtouchesBeganの間の遅延を探す必要があります接触を遅らせるビューがある場合は?私はsendEventにtimeStampも表示しましたが、それはhitTestシーケンスの後に来ます。 –

関連する問題