2

我故意在视图容器中放置了 2 个视图(表视图),它们部分重叠。视图 B 与视图 A 的大约 50% 重叠。

当我以编程方式移动视图 B 使其不再重叠时,视图 A 中先前重叠的区域不会响应触摸事件,也就是说,约 50% 不会。只有最初没有重叠的区域才会这样做。此外,在视图 B 中,现在在父视图中占据新空间的部分不响应触摸事件,只有恰好占据旧区域的视图部分。

我用来移动视图的代码很简单:

UIView* viewB = [self.childViewControllers.lastObject view];

CGRect rect = viewB.frame;
rect.origin.x += 200;

[UIView animateWithDuration:0.2 animations:^{
    viewB.frame = rect;
}];

从视觉上看,视图会移动,但触摸区域不会。

我在 iOS 6 中使用了新的故事板“容器视图”机制来最初放置视图。

我不知道为什么会这样。有任何想法吗?

谢谢。

4

1 回答 1

3

事实证明,当 xCode 在我的故事板中添加“容器视图”时,它会将我的视图嵌入到父视图中。所以我需要做以下事情:

UIView* viewB = [[self.childViewControllers.lastObject view] superview];

CGRect rect = viewB.frame;
rect.origin.x += 200;

[UIView animateWithDuration:0.2 animations:^{
    viewB.frame = rect;
}];

因为容器将我的视图嵌入到它自己的视图中,所以我需要获取超级视图并使用它。

如果我以编程方式完成所有这些工作,即添加容器并使用容器 API 查看我自己,我的原始代码就可以工作。

于 2013-01-11T16:07:40.470 回答