我正在开发一个横向视图iPhone应用程序。我旋转视图,然后在其中添加另一个视图,我在下面的代码中称为“horizontalView”。添加完之后,我将它重新放在中间位置。这可以很好地重新正确地居中,但问题是,我在mainView中的按钮开始不起作用。
// Add the horizontal controller
HorizontalContainerViewController* c = [[HorizontalContainerViewController alloc]
initWithNibName:@"HorizontalContainerViewController"
bundle:nil];
self.horizontalView = [c view];
self.horizontalView.center = CGPointMake(160, 240); // <---- PROBLEM HERE
[containerView addSubview:horizontalView];
// Initially show the main view
self.mainViewController = [MainViewController createFor: self];
[self.horizontalView addSubView:self.mainViewController];
如果我删除标记为“PROBLEM HERE”的行,我在mainViewController.view中的按钮工作正常。如果我添加这一行,他们就开始不响应我的触摸。可能会发生什么?
编辑:顺便说一句......我注意到靠近视图边缘的一些按钮不起作用,而视图中间的一些按钮工作得很好。谢谢,
-Steve
答案 0 :(得分:1)
我想出来了。看来,在iPhone应用程序中,如果最底层的视图没有覆盖窗口区域的某些部分,那么该区域基本上不接受“触摸”事件。
E.g you have 320x480 window area
you add a view of 320x480 to the window, which originally covers the same area
you rotate the view 90 degree left
Now, you have a vertical view that only covers the middle portion of the window area.
Something like:
|--------|
| |
----+--------+----
| | | |<-- your window area
| B | A | C |
| | | |
----+--------+----
| |<-- rotated view (your bottom-most view)
|--------|
然后,您添加其他子视图以最终覆盖整个景观区域。 (A + B + C) 但是,由于您的原始视图未覆盖B和C区域,因此任何碰巧放置在区域B和C中的控件都不会获得触摸事件。
在我的情况下,当我设置中心属性时,一些现有按钮落入上图中B或C等未覆盖区域。这就是为什么过去工作的一些按钮开始无法工作的原因。
经验教训:
1)旋转添加到窗口的最底部视图
并不是一个好主意2)(我没试过这个但是)在最底部的视图中设置“剪辑子项”是有帮助的,这样您就会注意到屏幕的某些区域是否可能不会处理触摸事件。 / p>
-Steve