2012-07-23 73 views
0

我有一個很奇怪的問題,我在我的應用程序中實現UIRotationGestureRecognizer來旋轉圖像。我的問題是,有時當你開始旋轉圖像時,它會跳到另一個手指。 示例:我用一根手指拖動圖像,之後用第二根手指開始旋轉,但圖像移至第二根手指。這是正常的嗎?它可以修復嗎? 我使用的代碼是:UIRotationGestureRecognizer

if([recognizer state] == UIGestureRecognizerStateEnded) { 

    prevRotation = 0.0; 
    return; 
} 

CGFloat newRotation = 0.0 - (prevRotation - [recognizer rotation]); 

CGAffineTransform currentTransformation = image.transform; 
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation); 

image.transform = newTransform; 

prevRotation = [recognizer rotation]; 

我試圖拯救中心的最後一個位置,並再次應用它,但它不工作要麼,像這樣:

lastPoint=image.center; 

if([recognizer state] == UIGestureRecognizerStateEnded) { 

    prevRotation = 0.0; 
    return; 
} 

CGFloat newRotation = 0.0 - (prevRotation - [recognizer rotation]); 

CGAffineTransform currentTransformation = image.transform; 
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation); 

image.transform = newTransform; 

prevRotation = [recognizer rotation]; 
image.center=lastPoint; 
+0

您的拖動是從UIPanGestureRecognizer? – borrrden 2012-07-23 06:57:44

+0

不,如果觸摸位於視圖內,我的拖動是檢測,如果它位於touchesMoved,則將我的圖像中心更改爲觸摸。 – user1179587 2012-07-23 16:57:26

+0

您可能只是在移動觸摸時進行任何操作。你無法做到這一點,因爲那樣會用手指或跳到那個手指。您需要跟蹤屏幕上有多少個手指,並且不要在兩個手指向下時拖動,或者計算兩個手指的平均值。或者節省一些麻煩並使用UIPan。 – borrrden 2012-07-23 23:36:48

回答

0

試試這個代碼:

-(void)rotate:(id)sender 
{ 

    [self.view bringSubviewToFront:[(UIRotationGestureRecognizer*)sender view]]; 

    self.imageTag = [[sender view]tag]; 
    NSLog(@"sender tag %d", self.imageTag); 
    if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 

     lastRotation = 0.0; 
     return; 
    } 

    CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]); 

    CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform; 
    CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); 

    [[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform]; 

    lastRotation = [(UIRotationGestureRecognizer*)sender rotation]; 
} 
+0

它非常奇怪,圖像不斷從一個手指跳到另一個手指,也許我的圖像的大小影響性能?它的尺寸爲50x50 – user1179587 2012-07-23 16:56:04

相關問題