同时接收触摸事件,然后再进行一个Uiview
-
14-10-2019 - |
题
我有一堆 UIViews
一个堆叠在另一个(不嵌套)。我希望他们所有人都能做出触摸的反应,但是似乎最高的视图遮盖了下面的视野,从而阻止了他们接受触摸事件。
起初,我以为我会从最高视图中观看所有触摸事件,然后手动致电
hitTest
, , 或者 pointInside
所有基础视图的方法,但我发现这两种方法都是私有的(可以吗?) 并且无法访问。
有什么想法如何实现?
解决方案
您可以检查触摸是否适合您的最高视图。如果不这样做,您可以调用相同的监督方法。诸如[self.superview samemethod:sameparameter]之类的东西。
您的最高视图有一种方法
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
在该方法中,您正在执行逻辑吗?在方法内部,您无法检查接收到的触摸是否在您的最高视图中
UITouch *touch = [touches anyObject];
[touch locationInView:self];
如果不这样
[self.superview touchesEnded:touches withEvent:event];
其他提示
触摸被发送到一个视图。然后,该视图可以选择地将它们传递到响应器链中。如果您想处理视图集合的触摸,则应该让他们将这些事件转发到下一个响应者,并拥有所有这些事件的共同父母(或它们的视图控制器,因为控制器也是响应者链的一部分)来处理这些事件触摸。
https://developer.apple.com/library/mac/documentation/general/devpedia-cocoaapp-mosx/responder.html
不隶属于 StackOverflow