iOS>>拖放问题>> UIView返回原始位置

时间:2013-03-18 14:56:13

标签: ios animation uiview drag-and-drop

我在IB中设置了4个UIImageViews。我还有一个描述状态的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";
}

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

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

P.S。我注意到如果我不更新“touchesEnd”处的标签,UIImageView将保持其最后位置,直到我点击另一个UIImageView;这里发生了什么事?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我取消了IB中的“自动布局”复选框,它运行正常。 这不可能是“最佳实践”......但它确实有效。