我有两个UIViews。我正在使用一个来包含另一个,以便我可以在另一个内部幻灯片。我遇到了一个问题,即使SubView剪辑到其父级的界限,它仍然接收触摸事件并阻止对其他底层视图的访问。

我有三个显示布局的屏幕截图。我有彩色绿色和孩子红色。

这个想法是用户点击“查看”和子视图幻灯片。当子视图处于默认位置时,UITabBar被覆盖,无法单击。您可以在底部显示红色视图的第一个图像中看到它。当子视图移动到顶部时,可以单击uitabbar,因为它现在可见。在第三个图像中,我向绿色UIView上启用了Cliptobounds,我展示了它的样子。

我已启用cliptobounds,因此我无法理解子视图为什么阻止底层的uitabbar。是我对Cliptobounds完全错误的理解吗?

有帮助吗?

解决方案

使用cliptobounds仅影响子视图的视觉布局,而不是逻辑布局。这意味着,在我的Subview对眼睛看不到,它可以触摸可见。

我通过动画子视图而不是其位置的动画来解决这个问题。在下面的代码中,StationProximityView是SubView。我将其大小设置为40像素,使黑色标题恢复为视图。

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectOffset(self.stationProximityView.view.frame, 0, -40);
[UIView commitAnimations];
.

当我不再需要它时,我会在视图中动画。

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectMake(0 ,0, 320, 500);
[UIView commitAnimations];
.

如果用户点击视图按钮,则显示整个子视图:

 [UIView beginAnimations:@"stationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,460,320,40);
 [UIView commitAnimations];
.

解雇导致视图以与小条形相同的方式隐藏。

 [UIView beginAnimations:@"hideStationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,0,320,500);
 [UIView commitAnimations];
.

此刻,此代码仅在iPhone 5上进行测试,因此硬编码的高度为500将导致先前的iPhone模型上的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top