2012-04-12 74 views
4

如果我在UITapGestureRecognizer上將numberOfTapsRequired設置爲2,則用戶在第一次點擊後再次點擊以觸發識別器時會有一定的時間。有誰知道如何找出允許的確切時間?UITapGestureRecognizer超時?

通過類比,在Cocoa中,NSEvent具有doubleClickInterval類方法。我正在尋找適用於iOS的UITapGestureRecognizer

+0

看起來並不像它的設定,你總是可以的角色你自己用'NSTimer' – 2012-04-12 16:47:10

+0

我不想把它,我只是想搞清楚它是什麼。我需要在沒有UITapGestureRecognizer的情況下複製雙擊,並且我希望用戶具有與使用UITapGestureRecognizer相同的體驗。 – 2012-04-12 16:59:05

+0

只是覺得它很可能會在0.2f左右; – 2012-04-12 17:01:49

回答

2

答案是:0.35秒,至少在iOS 5.1上是如此。

我創建了一個測試應用程序,使用一對輕敲識別器來識別單擊和雙擊來更新一對UI標籤。然後,我使用Instruments UI automation重複發送雙擊,並在兩次敲擊之間逐漸增加時間。在0.34秒時,一系列敲擊被認爲是雙擊,但在0.35秒時,它們被識別爲單敲擊。

這非常類似Lou的建議,但不同之處在於我需要使用Instruments。我無法在UIKit中模擬用戶點擊。

1

在測試應用程序中,創建一個UITapGestureRecognizer,然後開始在定時器上調用touchesBegan:withEvent:和關聯的成員。看看是否會導致手勢被識別。

您可能需要嘗試弄清楚如何正確調用它,以便任何手勢都能識別,但根據我的理解,識別器僅依靠這些被調用的視圖的相同消息的視圖版本上的選擇器,所以自己打電話應該有同樣的效果。

當您找到所需的任何容差時,您可以在您的應用中使用該容量。另外,因爲這可以在任何時候改變(因爲蘋果只是覺得這樣) - 或者它可能會在不同的iOS版本上有所不同,所以你可以隨時將它併入你的初始化中。

或者,您可以像@Paul在他的評論中建議的那樣接近。

+1

謝謝你的建議,Lou。我嘗試了你的建議,但是因爲我找不到創建UITouch或UIEvent對象的方法,所以我只向這些參數傳遞nil,而忽略模擬的水龍頭。但是你的建議讓我想到了,我最終使用了Instruments的自動化工具來基本完成你的建議。 – 2012-04-12 23:08:42