我有一个简单的视图层次结构示例。
显然,主视图空间是用户将与之交互的主要空间。在底部,我有可以弹出的选项卡,以向用户指示他/她在应用程序的进展中所处的位置。通常,这些选项卡仅占用底部“自定义选项卡”矩形指示的空间,但它们可以一直向上扩展以填充“空白空间”框。
为了让选项卡仍然可以点击,我必须使选项卡视图的框架成为包含“自定义选项卡”空间和“空白空间”空间的完整矩形。这导致的是,当标签未弹出时,“空空间”没有与用户交互,因为该输入基本上是被Uiview所消耗的,而不是通过层次结构的其余部分转发。
我想这个问题的根源是“主视图空间”和“空白空间+自定义选项卡”都是主窗口的子视图。
如果用户没有主动点击交互式元素,有没有办法告诉系统将用户输入转发到同级视图?例如,使用touchesBegan
等touchesEnded
方法向操作系统表明此视图未使用输入。
编辑
这是视图的另一个版本,展示了打开一个选项卡的状态:
编辑2
经过一些简单的测试,默认行为似乎是最顶层的视图首先获取输入。即使您UIView
在UITextField
. 清除UIView
将消耗输入,防止UITextField
可编辑
编辑3
选项卡的工作方式是用户可以点击选项卡(大小如第一张图片中所示),然后它将展开以显示与该选项卡关联的缩略图视图(如第二张图片中所示)。然后,用户可以选择再次点击选项卡以将其关闭,并将大小恢复为原始图片。为了使选项卡在打开时可单击,我必须让包含视图基本上足够大以包含所有 4 个选项卡,就好像它们已打开一样。这会导致包含视图中有大量空白空间。这个空白空间导致屏幕上的输入空间基本上是无效的。如果主视图空间中有一个按钮被空白区域覆盖,则用户将无法单击它。我希望能够避免这种行为,并且让空白区域覆盖的那个按钮仍然可以点击。