I have a custom UIViewController whose UIView takes up a corner of the screen, but most of it is transparent except for the parts of it that have some buttons and stuff on it. Due to the layout of the objects on that view, the view's frame can cover up some buttons beneath it. I want to be able to ignore any touches on that view if they aren't touching anything important on it, but I seem to only be able to pass along actual touch events (touchesEnded/nextResponder stuff). If I have a UIButton or something like that which doesnt use touchesEnded, how do I pass the touch event along to that?
I can't just manually figure out button selector to call, because this custom ViewController can be used on many different views. I basically need a way to call this:
[self.nextResponder touchesEnded:touches withEvent:event];
on UIControl types as well.
Best Answer
Probably the best way to do this is to override
hitTest:withEvent:
in the view that you want to be ignoring touches. Depending on the complexity of your view hierarchy, there are a couple of easy ways to do this.If you have a reference to the view underneath the view to ignore:
If you don't have a reference to the view:
I would recommend the first approach as being the most robust (if it's possible to obtain a reference to the underlying view).