2010-08-19 112 views
2

在iPhone OS上,-touchesEnded:withEvent:當您離開手指時會迅速觸發,除非出現拖動。如果-touchesMoved:withEvent:已經被觸發,那麼在你觸發已經觸發之前大約有0.6秒的延遲:withEvent :.touchesEnded:withEvent:如何解決延遲之前的延遲

我在一個新的項目中驗證了這個,沒有scrollView,沒有多點觸摸。

我希望用戶拖動一個物體,然後在他舉起手指時立即觸發一個方法。 0.6秒的延遲是不可接受的。

處理這個問題的任何想法?

編輯:我已經寫在測試項目中唯一的代碼是這樣的:

@implementation MyView 

// startTime is an ivar 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    startTime = [NSDate timeIntervalSinceReferenceDate]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"%f", [NSDate timeIntervalSinceReferenceDate] - startTime); 
} 
+0

你在移動的事件中做什麼?你有手勢識別器連線了嗎? – Eiko 2010-08-19 21:30:22

+0

什麼也沒有。這是一個新的空白項目。我已經寫的唯一代碼是這樣的: @implementation MyView的 - (無效)的touchesBegan:(NSSet中*)觸摸withEvent:方法(的UIEvent *)事件{ \t STARTTIME = [的NSDate timeIntervalSinceReferenceDate]; //開始時間是一個實例變量 } - (無效)touchesEnded:(NSSet中*)觸摸withEvent:方法(的UIEvent *)事件{ \t的NSLog(@ 「%F」,[NSDate的timeIntervalSinceReferenceDate] - 開始時間); } – 2010-08-19 21:46:31

+0

那麼,這個評論是不是很可讀,所以我編輯了這個問題。 – 2010-08-19 21:51:33

回答

3

發現了問題:魔術觸控板。當您運行模擬器時,Magic Trackpad會在確定您已結束觸摸之前添加延遲。