UIPanGestureRecognizer 不能平滑移动物体

Posted

技术标签:

【中文标题】UIPanGestureRecognizer 不能平滑移动物体【英文标题】:UIPanGestureRecognizer not moving object smoothly 【发布时间】:2012-03-16 16:17:13 【问题描述】:

我正在尝试使用 UIPanGestureRecognizer 来移动我的对象,但我似乎无法让它顺利移动。当我朝一个特定的方向移动并转向相反的方向时,它不会立即做出反应。我认为该值可能有问题,因为它在“->”方向上是正数,在“

我的代码如下:

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
        
        CGPoint pointA = [panRecognizer locationInView:self.view];
        CGPoint pointB = [panRecognizer translationInView:self.view];

        if(panRecognizer.state == UIGestureRecognizerStateEnded ||
           panRecognizer.state == UIGestureRecognizerStateChanged)      
            _camera.x += pointB.x * 0.0001f;
        
    

有没有人有更合适的方法来解决这个任务?

提前致谢。

【问题讨论】:

【参考方案1】:

你应该重置 UIPanGestureRecognizer 的翻译值:

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
    
   CGPoint point = [panRecognizer translationInView:self.view];
   _camera.x += point.x * 0.0001f;
   [panRecognizer setTranslation:CGPointZero inView:self.view];

【讨论】:

【参考方案2】:

斯威夫特 3:

func panDetected(recognizer: UIPanGestureRecognizer) 
    let translation = recognizer.translation(in: recognizer.view)

    _camera.x += translation.x
    _camera.y += translation.y

    recognizer.setTranslation(CGPoint.zero, in: recognizer.view)

不乘以 0.0001f 对我有好处 :)

【讨论】:

.0001f 乘法是因为原始答案使用 .0001f,可能是作为缩放运动的一种方式

以上是关于UIPanGestureRecognizer 不能平滑移动物体的主要内容,如果未能解决你的问题,请参考以下文章

在 UIPanGestureRecognizer 中使用velocityInView

如何使用 UIPanGestureRecognizer 移动对象? iPhone/iPad

在 UIButtons 上禁用 UIPanGestureRecognizer

UIPanGestureRecognizer 碰撞

如何在父视图中限制 UIPanGestureRecognizer

UIPanGestureRecognizer 干扰滚动