我有一个透明的UIView,几乎覆盖整个屏幕。我在顶部留下了50个像素。它是View Controller视图的子项。
在UIView下面有从UIView继承的MyView,它与屏幕大小相匹配。在这个MyView类中,我要求对它进行简单的处理:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == self) {
NSLog(@"MyView touched");
}
}
当然,有趣的是,如果用户触摸覆盖MyView的透明UIView,我不会在控制台中看到“MyView touch”。但是当用户触摸屏幕顶部的MyView的未覆盖区域时,触摸就会到达那里。
这对我来说是合乎逻辑的,因为我要求[touch view] == self
。但是,如果我想知道MyView的矩形区域被触及(无论是间接还是直接),该怎么办?
有没有办法捕捉屏幕/窗口上出现的任何触摸,然后检查它是否与视图的矩形区域匹配?
答案 0 :(得分:2)
您应该在Touch Events上学习iPhone应用程序编程指南的部分,了解您正在寻找的背景。您想要掌握的概念是响应者链,因此还要查看UIResponder
上的参考,以了解它正在做什么。你绝对可以做你正在谈论的所有事情,完整的讨论在上面的链接中。