嵌入式TabBarController命中检测错误?

时间:2015-07-07 18:45:53

标签: ios xcode storyboard uitabbarcontroller

我可能遇到过一个错误,或者我只是想以苹果公司不希望我这样做的方式做事。

我创建了一个GitHub repo,其中包含一个示例项目,该项目反映了我的应用的UI布局,但是内容不同,显示了问题。该应用程序应在选择了iPad Air的模拟器中运行。它严格来说是一款面向风景的应用程序。

在这个示例项目中,我还没有编写一行代码。我只使用故事板复制了这个问题。因此,我认为这个bug存在于iOS中,或者它不应该以这种方式完成。

在项目中,我在UIViewController中嵌入了起始UINavigationController。在view controller中,我在顶部有一些指定的空间,在此示例项目中有一个简单的UILabel,然后在它下面的container view占用了剩余的空间。 / p>

container view中嵌入的内容为UITabBarControllertab bar controller指向2 UITableViewController的链接,为了简单起见,这些链接中包含静态内容。

现在的问题是UITabBarItem的{​​{1}} UITabBar的点击检测区域。您可以点按实际tab bar controller上方(红线下方,但位于下图中的tab bar item部分上方),这不应该是tab bar的一部分,并且它将切换到另一个tab bar

Incorrect_Hit_Detection_Area

在我的真实项目中,这是一个问题,因为表格中的单元格是交互式的,当用户尝试点击底部单元格时,他们正在点击单元格而不是table view controller,{ {1}}是"偷窃"而是触摸和切换标签。

标签栏上有大约10个垂直空间点"偷窃"触摸输入。我在我的真实应用程序中通过为表格tab bartab bar验证了这一点,并将父视图控制器作为委托,并在委托时打印出触点y值通知了UITapGestureRecognizerUITabBar中的点按。

在我特定的大小调整中,表格会接到点710.点下面的一点(应该是711)报告为gestureRecognizer(:shouldReceiveTouch)捕获,但y值不是711 ,它是720.这一直持续到720,这是实际的gestureRecognizerShouldBegin()区域开始的地方。在点721处,由UITabBar上的手势识别器正确地报告为在y值721处。因此,点711和720之间的整个空间是死空间。表格会检测到假设的,但UITabBar会检测到它 。但究竟是什么让它“死了”#34;空间是711和720之间的所有点都报告为点720,所以我不能只是特殊情况下711和720之间的触摸点映射到我的表。

这是一个众所周知的事吗?我的理论是它发生了,因为UITabBar嵌入了UITabBar,而不是屏幕的整个尺寸,而且我不知道是否嵌入了整个内容tab bar controller有任何影响。

0 个答案:

没有答案