iOS:可拖动的UIView(仅垂直)

时间:2012-11-05 22:27:07

标签: ios uiview drag

在我的应用程序中,我有一个小的子视图,我想在右下角系绳,并允许仅垂直移动固定距离。

我有一些代码允许它被拖动,但没有进一步的限制:

- (void)viewDragged:(UIPanGestureRecognizer *)gesture
{
    CGPoint translation = [gesture translationInView:keyView];

    // move view
    keyView.center = CGPointMake(keyView.center.x + translation.x,
                           keyView.center.y + translation.y);
// reset translation
[gesture setTranslation:CGPointZero inView:keyView];
}

我在StackOverflow上四处寻找并尝试了几种方法,但唯一有效的方法没有考虑到对角线的移动,我找不到任何关于将它绑定到一个位置的东西。

所以有人知道如何做到这一点?非常感谢

编辑:此外,是否有人知道这种性质的主题的一个好的,信息丰富的参考文档(除Apple之外)?

1 个答案:

答案 0 :(得分:1)

你可以在视图拖动代码中添加一行,说明keyview.centre.y是否小于某个阈值(你希望它停在哪里),然后不要在它下面改变它。例如

keyView.centre = CGPointMake(keyView.center.x,
                       keyView.center.y - translation.y < threshold ? threshold : keyView.center.y);

还删除对x参数的更改以阻止它沿对角线方向移动。