iphone - 底层 View 如何知道其矩形是否被触摸,无论是直接还是间接?

标签 iphone cocoa-touch events uikit

我有一个透明的 UIView,几乎覆盖了整个屏幕。我在顶部留下了 50 像素。它是 View Controller View 的 subview 。

在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 触摸”。但是,当用户触摸屏幕顶部 MyView 的小未覆盖区域时,触摸就会到达那里。

这对我来说是合乎逻辑的,因为我要求[touch view] == self。但是,如果我想知道 MyView 的矩形区域被触摸(无论是间接还是直接)怎么办?

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

最佳答案

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

关于iphone - 底层 View 如何知道其矩形是否被触摸,无论是直接还是间接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154046/

相关文章:

iphone - MKCircleview 图纸

iphone - Storyboard UITableView 中的自定义单元格未在带有 UITableViewCellStyleDefault 的 ios7 中被拾取

iphone - 在后台播放广播

java - 在java swing上从子框架管理父框架

javascript - 事件处理程序不工作

iphone - 获取数据后重新排序 fetchedresultscontroller

iphone - 如何用CCSpriteBatchNode替换CCSpriteSheet

ios - 如何自定义分组表格 View 单元格的背景/边框颜色?

cocoa-touch - 临时构建更改文档目录

c++ - 创建的事件数量有限制吗?