我有一个 UIView 控件(图像中的白色矩形)
此外,我可以拖动该控件...
当我按下按钮时,我加载了一个 subview ,这是我创建的另一个 Nib ,我在其中放置了随机控件来说明我的观点......
如果你们有兴趣了解我是如何将 nib 文件放入 UIView 控件中的,请查看 this问题。我不认为您必须阅读它才能理解我的问题。
无论如何,加载该 nib 文件时的问题是我无法再拖动顶部 UIView。因此我改变了:
对于:
在 subview 的UIView中。换句话说,我放置在具有白色背景的 UIView 中的 nib 文件的 UIView。
当我这样做时,我能够拖动控件,但 subview 内的控件不再有效。我也尝试过将 touchesMoved 方法放在 subview 中,但是当我这样做时,应用程序表现得很奇怪。另外,将 nib 文件放置在 UIView 控件中的目的是避免在多个 nib 文件上重复相同的拖动功能。
我实际上需要创建一个像 power point 演示这样的应用程序,并且我需要在用户滑动 UIView 时更改幻灯片,例如,如果它的线小于 x,那么我将加载下一张幻灯片(nib 文件)用户界面 Controller 。也许有一种更简单的方法来做我需要的事情,但如果我让这个拖拽工作,我就完成了,因为我只需要做一次那个功能。
最佳答案
如果您希望它响应事件,您应该为您的 subview 保留 UserInteractionEnabled 标志。
实现此目的的一种方法是使用 UIGestureRecognizer 进行拖动。
UIPanGestureRecognizer 非常适合这个 (UIGestureRecognizer at apple)
基本上,您会将手势识别器附加到您想要平移的 View ,然后在它提供的回调中调整它的位置。
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePanGesture:)];
panGesture.minimumNumberOfTouches = 1;
[draggableSubview addGestureRecognizer:panGesture];
[panGesture release];
然后在 handlePanGesture 方法中,您使用它传递的识别器的 translationInView 方法计算出用户平移的距离,并相应地转换 subview 。
关于iphone - 拖动 UIView 而不禁用其子控件 iPhone/iPad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658563/