2011-03-29 7 views
1

다음 코드는 4.2 & 4.3에서 작동하지만 4.0 & 4.1에서는 값이 NaN으로 표시되지만 UIGestureRecognizerStateEnded 경우에만 나타납니다. 그것은 UIGestureRecognizerStateChangediPhone 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

스위치에는 break 문이 없습니다. 그게 의도적 인거야? – Vagrant

+0

음, 데모 목적으로 일부 코드를 가져 왔습니다. 내 원래 코드에는 실제로 break 문이 있습니다. 좋은 캐치 :) –

답변

0

내 자신의 코드를 보면, 나는 시작/끝 상태에서 좌표를 확인하지. 화면에서의 위치와 관련이없는 별도의 이벤트로 처리했습니다. 마지막 경우에는 Changed가 보낸 마지막 좌표를 가정합니다. 그리고 Begin의 경우, 제스처가 조금 움직 인 후 제스처가 시작된 후에 결정 되었기 때문에 좌표를 신뢰할 수 없습니다. 따라서 초기 좌표가있는 탭 인식기에 물어 봅니다.

이것이 원래의 의도 인 것으로 추측됩니다. 변경된 내용이 사용되었지만, 4.2 및 4.3에서는 End에 대한 최종 좌표를 채우기 시작했습니다. 일관성을 유지하기 위해서입니다.