iPhone:视图和子视图的层次结构

Posted

技术标签:

【中文标题】iPhone:视图和子视图的层次结构【英文标题】:iPhone: Hierarchy of Views and SubViews 【发布时间】:2011-04-16 20:20:36 【问题描述】:

一个初学者的问题:

我在我的视图中创建了一个子视图。在那个子视图中,我创建了另一个子视图。每个子视图填满整个屏幕 (320x480):

[self.view addSubview:aView]; // 320x480
[aView addSubview:yetAnotherView]; // 320x480

如果我理解正确,这将导致以下层次结构:

顶部:还有另一个视图 中间:视图 底部:视图

到目前为止一切顺利。我的问题是,我想识别这些视图顶部的手势(无论可能是什么视图......在我的情况下,它是另一个视图,我想)。以下命令不起作用——我猜是因为视图被子视图隐藏了:

    UITouch *touch = [touches anyObject];
gestureStartPoint = [touch locationInView:self.view];

有没有办法告诉编译器它不应该采用 self.view 而是在所有其他视图之上的任何视图

任何帮助将不胜感激!


编辑:

我认为我的问题是我正在编辑的子视图是全屏 UITextViews ......我想我可以覆盖它们的触摸?例如从右向左滑动应该可以,但是从下到上滑动呢(通常会滚动 uitextview - 除非我将其设置为无法滚动)。

【问题讨论】:

【参考方案1】:

如果你使用 touchesMoved:withEvent: 方法

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

那么你可以使用这个:

UITouch *touch1 = [[event touchesForView:self.someView] anyObject];

希望这会有所帮助。

【讨论】:

非常感谢。我刚刚意识到问题在于我正在尝试使用全屏 UITextViews 作为子视图......我猜你不能在它们上使用手势,对吧?

以上是关于iPhone:视图和子视图的层次结构的主要内容,如果未能解决你的问题,请参考以下文章

将应用程序从 iPhone 迁移到 iPad - 不同的视图控制器层次结构

在 Core Data iPhone 应用程序的视图层次结构中保存位置

专注于 iPhone 上的下一个有效键视图

在 iPhone 中使用缩放图像翻转滚动视图

使用嵌套视图重新创建 iPhone 库存应用程序

iPhone 应用程序:整体应用程序层次结构和架构