我有一个自定义UIViewController的UIView占据了屏幕的一个角落,但其中大部分是透明的,除了它的一些按钮和东西的部分。由于该视图上对象的布局,视图的框架可以掩盖它下面的一些按钮。如果他们没有触及任何重要的东西,我希望能够忽略对该视图的任何接触,但我似乎只能传递实际的触摸事件(touchesEnded/nextResponder的东西)。如果我有一个UIButton或类似的东西不使用touchesEnded,我该如何传递触摸事件呢?如何忽略触摸事件并将它们传递给另一个子视图的UIControl对象?
我不能只是手动找出按钮选择器来调用,因为这个自定义ViewController可以用在许多不同的视图。基本上,我需要一种方法来调用这个:
[self.nextResponder touchesEnded:touches withEvent:event];
为好。
这似乎是我想要做的,但我想忽略触摸的视图是我创建的UIViewController的视图属性,所以有没有办法来重写该视图的hitTest函数? –
@chris:好的,只需将其子类化并如上所示使用重写的方法。这意味着你会有一个额外的'.h'和'.m'文件,里面只有很少的代码,但它会完成这项工作。另外,passthrough视图是您的工具包中有用的子类。如果您的视图控制器在'nib'中创建视图,只需进入IB文件并将视图的类更改为身份检查器中的新子类。如果它是以编程方式创建的,则在'loadView'中创建并分配您的视图子类(请参阅编辑)。 – Stuart
精彩的建议!我一直在寻找一个好的解决方案一整天。谢谢。 – Judioo