2014-01-29 55 views
1

我想在拖動時稍微旋轉UIView。我設法使用UIPanGestureRecognizer來拖動。我也嘗試使用CGAffineTransformRotate旋轉,它工作。但是,當我同時應用拖動和旋轉時,UIView只能旋轉,並且不會在超級視圖中拖動。這裏是我在手勢處理器中做的事情:拖動時的視圖旋轉

CGPoint translation = [gesture translationInView:self.view]; 
    // to drag 
    gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y); 
    // to rotate 
    gesture.view.transform = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4); 
    // return to default so that it doesn't accumulate 
    [gesture setTranslation:CGPointMake(0, 0) inView:self.view]; 

我該如何解決這個問題?

編輯: 這裏是整個代碼:

- (void)handlePan:(UIPanGestureRecognizer*)gesture{ 
if (gesture.state == UIGestureRecognizerStateBegan) { 
    // Save initial post center for snapping 
    point = CGPointMake(gesture.view.center.x, gesture.view.center.y); 
} else if (gesture.state == UIGestureRecognizerStateChanged){ 
    // Translate user movement across the screen to dragging coordinates 
    CGPoint translation = [gesture translationInView:self.view]; 

    gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y); 

    CGAffineTransform rotate = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4); 

    gesture.view.transform = rotate;//CGAffineTransformConcat(translate, rotate); 

    [gesture setTranslation:CGPointMake(0, 0) inView:self.view]; 


} else if (gesture.state == UIGestureRecognizerStateEnded){ 
    // Animate snap back to place 
    [UIView animateWithDuration:0.2 animations:^{ 
     gesture.view.transform = CGAffineTransformIdentity; 
     // [self.imagePost setCenter:point]; 
    }]; 
} 

}

+0

我明白你是不是想用兩個手指旋轉,你只是一個視圖在你平移時旋轉。如果這是您正在發佈的代碼的作品。所以這個問題一定在別的地方。 – Odrakir

+0

@Odrakir當手勢識別器狀態發生變化時,上面的代碼被放置,當我移動它旋轉的視圖時,向上或向下移動它就會彈回它的位置。我會發布整個代碼。我想沒有任何東西會影響動畫。請在一分鐘內檢查它 – HusseinB

+0

該代碼也可以工作。 – Odrakir

回答

1

嘗試加入這個方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
if (![gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] && ![otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { 
    return YES; 
} 

return NO; 

}

+0

不,它不起作用。我試過它,因爲你用UITapGestureRecognizer發佈它,然後我用UIPan嘗試它,因爲我使用平移也只是也沒有工作。我也檢查了代表團。 – HusseinB

+0

這應該起作用。嘗試一直返回YES,看看它是否有所作爲。此外,看看[這裏](http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more)爲一個教程處理泛和捏在相同的時間。 – Gad

+0

我試過返回YES它也沒有工作。旋轉應該在拖動的同時進行。沒有旋轉手勢。我只是左右拖動,它應該稍微旋轉,而移動。無論如何感謝您的意見 – HusseinB