2013-10-26 37 views
3

我在我的應用程序中使用UIPanGestureRecognizer。 我必須停止根據我得到的翻譯值來平移視圖。這是一段簡單的代碼。UIPanGestureRecognizer多長時間回撥一次?

-(void) handlePan:(UIPanGestureRecognizer) gestureRecognizer { 
CGPoint translation = [gestureRecognizer translationInView:self.view]; 
if(((someFixedPoint.center.y - currentYCoord + translation.y) < A_FIXED_DISTANCE)) 
{ 
[view setCenter:[fixedX, currentYCoord + translation.y]; 
} 
} 

問題是translation.y每當我快速平移時會返回不同的值。它工作正常,如果我慢慢地平移,因爲**translation.y**給出一致的值(對於前23,24,25 ...如我泛)。但是,如果我快速平移,它會在每次運行中給出不同的值(對於實例23,29,34 ...),在其他運行中給出(27,31,35 ...)。因此,在之前的最後一箇中心如果語句變成錯誤,則每當我快速平移時將其設置在不同的點。 無論我的平移速度如何,我怎樣才能確保最後的中心設置每次都在相同的最大點上

回答

1

回調由硬件的掃描速率決定。你不能改變這一點。所以,改變你的算法來檢測你的限制翻譯>=,然後將其固定到該限制。

即不直接使用translation.y計算中心,使用MIN(translation.y, MAX_VALUE)

+0

感謝北斗星很簡單的解決方案。我想不起來。該死的! – shshnk

相關問題