同时在多个UIView上接收触摸事件

3

我有一堆堆叠在一起的UIViews(不是嵌套)。我希望它们都能对触摸做出反应,但似乎位于最上层的视图会遮盖下面的视图,从而阻止它们接收触摸事件。

起初,我想用最上层的视图来捕获所有触摸事件,然后手动调用所有底层视图的 hitTestpointInside 方法,但我发现这两种方法不知何故是私有的(可能是吗?),无法访问。

有什么办法解决这个问题吗?

2个回答

3
你可以检查触摸事件是否针对你最上层的视图。如果不是,你可以调用父视图相同的方法。类似于 [self.superview sameMethod:sameParameter]。
你的最上层视图有一个方法。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

在这个方法里,你正在执行你的逻辑对吗? 在这个方法里,你不能检查接收到的触摸是否在你的最上层视图上吗?

UITouch *touch = [touches anyObject];
[touch locationInView:self];

如果不是,你可以使用以下方式将其传递给superView的相同方法:

[self.superview touchesEnded:touches withEvent:event];

更正:将 "superView" 更改为 "superview" - Ralphleon

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接