2011-03-29 99 views
1

以下代碼適用於4.2 & 4.3但在4.0 & 4.1值爲NaN,但僅在UIGestureRecognizerStateEnded案例中出現。它顯示了UIGestureRecognizerStateChanged手勢識別器僅在iPhone 4.0和4.1中出現問題

- (void)panGesture:(UIPanGestureRecognizer*)gestureRecognizer 
{ 
    CGPoint touchPoint = [gestureRecognizer locationInView:self]; 
    switch ([gestureRecognizer state]) { 
    case UIGestureRecognizerStateChanged: 
     NSLog(@"panChanged - touchPoint = %f", touchPoint.x); // Always works 
    case UIGestureRecognizerStateEnded: 
     NSLog(@"panEnded - touchPoint = %f", touchPoint.x); // Always outputs nan 
} 

不知道這是蘋果的部分錯誤,或者如果我做錯了正確的值。請告知

+1

您的交換機中沒有中斷聲明。那是故意的嗎? – Vagrant 2011-03-29 20:24:34

+0

是的,我拿出一些代碼只是爲了演示的目的。我原來的代碼的確有斷言。儘管趕上:) – 2011-04-01 16:50:24

回答

0

看我自己的代碼,我從來沒有檢查開始/結束狀態的座標。我只是將它們視爲單獨的事件,與屏幕上的位置無關。在最後的情況下,我假設Changed發送的最後一個座標。在開始的情況下,我不能相信座標,因爲它們是在手勢稍微移動並開始手勢後確定的,所以我要求我的輕敲識別器將起始座標放在哪裏。

我懷疑這是最初的意圖,即使用Changed,但在4.2和4.3中,他們開始填充End的最終座標,以保持一致。