我正在通过一个非常简单的Ray Wenderlich iOS“拖动”示例,其中2 UIImageViews
(猴子和香蕉)可以在屏幕上拖动。它在ViewController实现文件中使用UIPanGestureRecognizer
:
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
工作正常,猴子和香蕉留在你拖动它们的任何位置。但是,我想要点击(触摸)UIImageView
中的任何一个来成为最顶层的视图。我愚弄了一下,想出了这行代码:
[self.view bringSubviewToFront:recognizer.view];
我把它放在handlePan方法中,它确实将点击(触摸)的图像带到前面,但它将之前的图像重置为屏幕上的原始位置。如果省略将触摸的子视图放在前面的代码行,则不会这样做。
将选定的子视图置于正面,将另一个图像重置为原始位置是什么意思?如何在UIPanGestureRecognizer
中阻止这种情况?没有去touchesBegan
,touchesEnded
等方法路线?
显然我是ios编程的新手,但我找不到可能是一个简单问题的答案。谢谢你们......任何帮助都表示赞赏......
答案 0 :(得分:4)
我在这里重新创建了你的来源。问题是自动布局,您需要禁用它。因为当您将视图置于前面时,它会将规则应用于其他视图以检查位置,并将其重新定位在原始位置。
那么,为什么在更换相框时不会发生这种情况?当您仅更改框架时,每次更改一个视图的中心时,它都不会应用自动布局规则,它仅在视图容器层次结构更改或视图容器框架更改时应用。
就像你告诉你正在做Ray Wenderlich教程一样,我建议你检查一下the tutorial about autolayout。 Ray Wenderlich网站的资料是一个很好的起点。
-
在.xib和故事板上禁用自动布局只需一点帮助,选择视图并禁用复选框: