2012-06-17 42 views
0

我有一个问题。 有一个uiview,由手势控制(可以水平移动)。 虽然这个uiview很小,但一切正常。CGAffineTransformScale +手势

使用CGAffineTransformScale缩放后,奇怪开始: 潘开始工作奇怪 - 变得不是很敏感。 因此,在更大的状态下,我可以在PAN开始工作前在1.5厘米的范围内移动手指。 之后,一切正常(UIView手指拖动),但不是很顺利。

我认为CGAffineTransformScale后的视图增加了一些东西,负责手势。 如果我将视野缩小了,手势就会开始工作。

请帮忙! 谢谢!

//过渡

[UIView transitionWithView:pagesView 
        duration:0.25 
        options:UIViewAnimationOptionCurveEaseOut + UIViewAnimationOptionAllowUserInteraction + UIViewAnimationOptionBeginFromCurrentState 
       animations:^{ 

        pagesView.transform = CGAffineTransformScale(pagesView.transform, kResize, kResize); 

       } 
       completion:^(BOOL finished){ 


       }]; 

回答

1

如果你要求它在视图翻译泛手势识别,以及视图已经被缩小到原来的两倍自然大小,那么你的手指的移动划分由二来计算翻译。据推测,这不是你想要的。

请求平移手势识别器在视图中进行翻译,其中未对进行缩放。我假设你的缩放视图有一个非转换的超视图。尝试使用这个作为你的手势识别器的动作:

- (IBAction)pan:(UIPanGestureRecognizer *)panner { 
    UIGestureRecognizerState state = panner.state; 
    if (state != UIGestureRecognizerStateChanged && state != UIGestureRecognizerStateEnded) 
     return; 
    UIView *movingView = panner.view; 
    UIView *referenceView = movingView.superview; 
    CGPoint offset = [panner translationInView:referenceView]; 
    [panner setTranslation:CGPointZero inView:referenceView]; 
    CGPoint center = movingView.center; 
    center.x += offset.x; 
    center.y += offset.y; 
    movingView.center = center; 
} 
+0

Rob谢谢你!我会尽力。毫无疑问,这是我需要的。 – Another84