2012-05-17 56 views
0

我收到一些不尋常的行爲UISwipeGestureRecognizer。第一次刷卡被正確檢測到,但第二次刷卡沒有。然後第三次滑動被正確檢測到,但第四次滑動沒有。我有兩個滑動手勢識別器,一個用於左側,另一個用於右側。下面是代碼:UISwipeGestureRecognizer的不尋常行爲

.h文件中

- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)recognizer; 

.m文件

- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)recognizer { 
    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) { 
     NSLog(@"you swiped left"); 
     [self spinSunCounterClockwise]; 
    } else { 
     NSLog(@"you swiped right"); 
     [self spinSunClockwise]; 
    } 

} 

因此,舉例來說,如果我向左滑動第一次,spinSunCounterClockwise被叫,但如果我再次滑動spinSunClockwise被調用。

另一個例子是,如果我第一次滑動spinSunCounterClockwise被調用。如果我向右滑動,則再次調用spinSunCounterClockwise

請幫忙嗎?

編輯1:之一的紡絲方法

-(void) spinSunCounterClockwise 
{ 
    [UIView animateWithDuration:2.0f animations:^{ 
     imgSun.transform = CGAffineTransformRotate(imgSun.transform, 3.142); 
    } completion:^(BOOL finished) { 

    }]; 
} 
+0

'spinSunCounterClockwise'和'spinSunClockwise'做了什麼?他們是否旋轉了添加了手勢識別器的視圖? – omz

+0

是的,我會用其中一種方法更新OP,另一種方法的度數爲負值。每次奇怪的滑動我也會得到錯誤的'NSLog'消息。 – garethdn

回答

1

當您通過180°旋轉視圖(順便說一句,你應該使用的M_PI代替3.142)的觀點是顛倒之後,還等什麼以前離開現在是正確的,反之亦然。

所以,當你向左滑動的第一次,第二次左輕掃(從你的角度)實際上是公認向右滑動,同時向右滑動實際上是左輕掃,這也解釋了,您對行爲觀察到的。

在兩次手勢(360°旋轉)後,您的視圖再次處於其原始方向,因此對於第三個手勢,識別再次爲「正常」。

+0

謝謝。我有兩個問題:1.如果我想旋轉它360degs我使用什麼值('2 * M_PI'似乎不工作)。 2.如果我想旋轉180度,但是仍希望我的滑動功能正常工作,您會有什麼建議。 – garethdn

+0

1.你會在SO上發現很多關於該主題的帖子,只是搜索諸如「360 uiview」之類的東西,大多數答案似乎都涉及到使用CAAnimation。 2.您可以檢查視圖是否旋轉(例如,使用'CGAffineTransformIsIdentity')並在該情況下執行相反的操作。 – omz

+0

是的,我已經找到了那個好點 - 'CAAnimation'並不是我真正想在這裏實現的,所以我決定在完成後旋轉179.999度,然後再旋轉179.999度。再次感謝你的幫助。 – garethdn