从 UIImageView 传递触摸到 superview

Posted

技术标签:

【中文标题】从 UIImageView 传递触摸到 superview【英文标题】:Passing touches from UIImageView to superview 【发布时间】:2015-02-18 11:09:09 【问题描述】:

我有四个UIImageViews 放在一个圆形UIView 上。拖动UIView 旋转视图。但是当我拖动 UIImageView 时,不会发生旋转。 UIImageView 正在吃东西。

我将 UIImageView 子类化并尝试了这个:

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
    [self.superview touchesMoved:touches withEvent:event];
    [super touchesMoved:touches withEvent:event];

这似乎并不能解决问题。我尝试禁用对UIImageView - [imageView setUserInteraction:NO] 的触摸。那也解决不了问题。我知道有人问过类似的问题。但似乎没有一个能解决我的问题。

谢谢。

【问题讨论】:

你在哪里写视图旋转代码。 父 UIView 内的@Nagarajan 【参考方案1】:

尝试在您的UIImageViews 上将userInteractionEnabled 设置为NO,这应该可以防止他们使用触摸。

【讨论】:

抱歉,我不知道您所说的“禁用触摸”是什么意思。如果您禁用它们,您的 touchesMoved:withEvent: 方法是否仍然被调用?如果是,那么我建议使用UIPanGestureRecognizer 来检测拖动。 是的。 touchesMoved 仍然被调用。所以我在超级视图上放了一个平移手势?有没有其他办法? 我刚刚尝试了将userInteractionEnabled 设置为NO 的解决方案,对我来说它有效,这意味着只有超级视图的touchesMoved:withEvent: 被调用(即使我拖动子视图),所以您的设置一定有其他问题 我不确定出了什么问题。一切似乎都很好。 @Anil 也许你在某个地方有另一个子视图?你有没有尝试实现hitTest:withEvent:(UIEvent *)event?如果你在hitTest中放一个断点会发生什么,它是否进入断点?

以上是关于从 UIImageView 传递触摸到 superview的主要内容,如果未能解决你的问题,请参考以下文章

在作为子视图添加的滚动视图中将触摸事件传递给 uiimageview

防止从 UIImageView 到 superview 的触摸传输

触摸事件的传递

在 Swift 中检测 UIImageView 触摸

如果稍后我会检测到触摸它,我应该释放添加到我的视图中的 UIImageView 吗?

无法触摸在 Swift 中移动的 UIImageView