无论是直接还是间接,底层视图如何知道其矩形是否被触及?

时间:2009-07-20 14:51:30

标签: iphone cocoa-touch events uikit

我有一个透明的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的矩形区域被触及(无论是间接还是直接),该怎么办?

有没有办法捕捉屏幕/窗口上出现的任何触摸,然后检查它是否与视图的矩形区域匹配?

1 个答案:

答案 0 :(得分:2)

您应该在Touch Events上学习iPhone应用程序编程指南的部分,了解您正在寻找的背景。您想要掌握的概念是响应者链,因此还要查看UIResponder上的参考,以了解它正在做什么。你绝对可以做你正在谈论的所有事情,完整的讨论在上面的链接中。