我有3个UIView,分层在一个大型uiview之上。我想知道用户是否触及顶级用户而不关心其他用户。我将在第二个UIView中有几个按钮,在第三个UIView中有一个UITable。检测某些UIView是否在其他UIView中被触及
问题是我在第一个视图上关闭了userInteractionEngabled,并且该视图可以正常工作,但所有其他视图以同样的方式响应,即使我关闭它。如果我在self.view上禁用userInteractionEnabled,它们都不会响应。我也无法检测touchesBegan委托方法中触摸了哪个视图。
我的代码:
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
aView = userInteractionEnabled = YES;
[self.view addSubview:aView];
UIView *bView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 50)];
bView.userInteractionEnabled = NO;
[self.view addSubview:bView];
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//This gets called for a touch anywhere
}
对不起,我知道你在正确的轨道上,但我有点麻烦,你完全不知道你在说什么。我得到了从您的locationInView接触触及的点,我可以在技术上确定用户触摸哪个uiview,但我不知道它是如何调用hitTest – Rudiger 2010-05-08 08:33:21
应该注意的是,调用'locationInView:'参数为' nil'给你在主窗口坐标空间中的位置'CGPoint'。 – 2012-03-13 00:48:39