gpt4 book ai didi

objective-c - UIView clipToBounds 不会阻止 subview 在父 View 之外接收触摸

转载 作者:行者123 更新时间:2023-11-29 11:08:23 26 4
gpt4 key购买 nike

我有两个 UIView。我用一个来容纳另一个,这样我就可以将一个滑入另一个。我遇到了一个问题,即使 subview 被裁剪到其父 View 的边界,它仍然接收触摸事件并阻止访问其他底层 View 。

我有三个显示布局的屏幕截图。我已将父项涂成绿色,将子项涂成红色。

思路是用户点击“View”,subView向上滑动。当subView在默认位置时,UITabBar被覆盖,无法点击。您可以在第一张图像中看到这一点,其中红色 View 位于底部。当 subview 移动到顶部时,可以单击 UITabBar,因为它现在是可见的。在第三张图片中,我展示了在绿色 UIView 上启用 clipToBounds 的情况。

我已经启用了 clipToBounds,所以我不明白为什么 subView 会阻塞底层的 UITabBar。我对 clipToBounds 的理解是完全错误的吗??

最佳答案

使用 clipToBounds 只会影响 subview 的视觉布局,不会影响逻辑布局。这意味着虽然我的 subview 对眼睛不可见,但触摸可见。

我通过动画化 subView 的大小而不是它的位置来解决这个问题。在我下面的代码中,stationProximityView 是 subview 。我将其大小设置为 40 像素的动画,以使黑色标题重新出现在 View 中。

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

当我不再需要它时,我会在 View 之外设置动画。

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

如果用户点击 View 按钮,则会显示整个 subview :

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

解雇导致 View 以与小栏相同的方式隐藏。

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

目前,此代码仅在 iPhone 5 上进行测试,因此 500 的硬编码高度会导致以前的 iPhone 机型出现问题。

关于objective-c - UIView clipToBounds 不会阻止 subview 在父 View 之外接收触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com