2017-08-06 75 views
0

重新排列我的UIViews的結構後,我似乎引入了延遲繪圖(用戶可以用手指在屏幕上繪製)。在繪圖開始之前可以忽略不計,但現在手指的初始移動和繪製線之間存在明顯的延遲。在我繼續繪製時,延遲似乎消失了。所以最初的觸摸事件有可能被延遲。iOS中最早的註冊觸摸事件

我的問題不是如何解決這個特定的實例,但在診斷中,我遇到了以下問題:我可以註冊觸摸屏幕的最早時間點(觸發時間)是什麼?

現在我把時間戳放在所有UIResponders(UIWindow - > UIView - > ... - > DrawingView)的hitTest中。但在UIWindow中第一次調用hitTest之前是否會出現延遲?

謝謝!

回答

1

UIWindow在將事件直接傳遞到視圖之前向手勢識別器傳遞觸摸事件。這發生在-[UIWindow sendEvent:]https://developer.apple.com/documentation/uikit/uiwindow/1621614-sendevent)內。我相信它命中 - 測試視圖層次結構以查找可能對事件感興趣的手勢識別器,因此您不應期望郵件被延遲。

如果您的視圖或其任何超級視圖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序列之後。 –