【问题标题】:iOS >> Drag and Drop Issue >> UIView Returns to Original PositioniOS >> 拖放问题 >> UIView 返回到原始位置
【发布时间】:2013-03-18 14:56:13
【问题描述】:

我在 IB 中设置了 4 个 UIImageView。我还有一个描述状态的 UILabel(如下面的代码所述)。 我使用 touchesBegan、touchesMoved 和 touchesEnd 方法来捕捉对象的移动,如下所示:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch* aTouch = [touches anyObject];
    UIView* aView = [aTouch view];
    if (aView != self.view) {
        [self.view bringSubviewToFront:aView];
        self.statusLabel.text = @"You're Dragging...";
    }
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch* aTouch = [touches anyObject];
    UIView* aView = [aTouch view];
    if (aView != self.view) {
        aView.center = [aTouch locationInView:self.view];
    }
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    self.statusLabel.text = @"At Ease";
}

问题是,在我移动(在模拟器中)其中一个 UIImageView 后,它们“跳”回其在 IB 中设置的原始位置,而不是留在我放置它们的位置。

为什么会这样? 如何在“touchesEnd”“捕获” UIImageView 的新位置并避免这种“跳跃”?

附:我注意到,如果我不更新“touchesEnd”处的标签,UIImageView 将保持在最后一个位置,直到我点击另一个 UIImageView;这是怎么回事?

【问题讨论】:

  • 代码在我运行的快速模型中看起来和运行良好(尽管我可能会跟踪正在移动的视图并根据touchesEnded 位置设置其最终位置)。你确定你没有在代码中的其他地方设置移动视图的中心,或者从笔尖重新加载整个视图?

标签: ios animation uiview drag-and-drop


【解决方案1】:

您的代码似乎是正确的..您只需在取消选中自动布局后尝试... 后来我发现作者自己发布了答案......所以,对不起这个帖子..

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 谢谢 json;别介意迟到的回复,我很高兴看到其他人使用相同的解决方案遇到同样的问题......知道接下来会发生什么吗?这是否意味着如果我想做拖放我不能使用自动布局?
  • @OhadRegev 谢谢..我会让你知道......因为苹果必须有一个选项来使用它的自动布局..让我们现在找到..你是否使用了图像的位置锁定。 .??
  • json,我没有使用图像的位置锁定。我对此不熟悉......顺便说一句 - 我尝试使用 UIGestureRecognizer 并且它工作正常(我仍然需要更好地学习它,但它很酷......)。无论如何,再次感谢您的帮助和意愿!
【解决方案2】:

我取消选中 IB 中的“自动布局”复选框,它工作正常。 这不是做到这一点的“最佳做法”……但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多