当UILongPressGestureRecognizer触发它时,如何阻止我的UIView“跳跃”?

时间:2012-08-26 21:44:15

标签: objective-c ios ios5 uigesturerecognizer

预期功能:

长按按钮后,可以在屏幕上拖动它。

跳跃错误:

当我最初开始拖动按钮时,它的中心“跳转”到注册了我的初始点击的CGPoint以触发长按。例如,我长按其右上角的按钮,一旦我按住它就开始拖动光标,按钮跳转到“右上”位置。

跳跃之后 - 所有拖动都很好。

代码:

- (void)longPress:(UILongPressGestureRecognizer*)receivedGesture
{
   if (receivedGesture.state == UIGestureRecognizerStateChanged)
   {
       CGPoint translation = [receivedGesture locationInView:self.scrollView];
       pannedBadge.center = translation;
   }
} 

终极问题:

这里有什么解决方案?如何使初始拖动从原始中心移动按钮?

谢谢!

2 个答案:

答案 0 :(得分:1)

我通常用于制作可拖动视图的是我检测触摸的起点,然后获得它(触摸)移动的差异,然后按如下方式设置视图的中心:我不将其设置为触摸的地方绝对,但我使用刚刚检测到的触摸动作相对设置它。

答案 1 :(得分:0)

原因是您的翻译点询问手势在视图中的位置,而不是视图中心的位置。如果你启动pannedBadge.center作为按钮的中心,我应该工作。希望这有帮助!