我有一个UIControl(或UIView,无关紧要),这是由另一个UIControl覆盖的。另一个UIControl对触摸事件做出了很好的反应。但是,底层的UIControl还需要知道触摸,以及它是否实际上是“在它上面”或者不是从用户的角度来看。覆盖UIControl部分透明。
如何才能触及底层UIControl?
答案 0 :(得分:1)
我认为有几种方法可以解决这个问题......
你可以将触摸事件传递给另一个控件...虽然我不认为如果你将上部视图移动到另一个视图上它会工作吗?你可能需要进行实验。
更简单的方法可能只是查看下方的矩形是否包含触点:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self];
if (CGRectContainsPoint(lowerView.frame, touchLocation)) {
<doyourthing>
}
我不记得了,但你可能需要转换两个视图之间的视图坐标?!?或者您可以通过 - (BOOL)pointInside:(CGPoint)指向withEvent:(UIEvent *)事件来询问视图本身