更新 2
我的怀疑是正确的。问题出在动画中,因为我没有考虑 Y 轴的原点,当通话状态栏可见时,它是不同的。我将添加一个显示相关代码的答案。
更新 1
我认为菜单的动画导致了问题。当我按下菜单时,它会启动一个动画来显示菜单。动画将呈现的 VC 向右滑动,将其缩小一点并在 z 轴上旋转以使其看起来平滑酷炫。如果我能找到任何东西,我会朝那个方向进行调查并更新。
原帖
在我的应用程序中显示通话状态栏时,我注意到一些 UI 问题。
我有一个自定义视图,它充当我的导航栏,并包含一个返回菜单的小按钮。(我会称之为 menuBtn
)。在这个自定义导航栏下方,我有一个tableViewHeader
包含 2 个按钮的表格视图,用于在表格中的日期之间导航。(我将调用这些按钮:prevBten
和nextBtn
)。我将以这 3 个视图为例,但问题无处不在……
通常一切都按预期完美运行。即使通话状态栏变得可见,调整大小也很完美,生活也很棒。当我单击时问题开始,menuBtn
因此当前视图滑开以显示主菜单(这样做我在 之间切换Storyboards
)。现在,当我回到原始屏幕时,所有视图看起来都还可以(按大小),但是现在点击区域与按钮的图像不匹配:我可以看到按钮应该在的位置,但是当我点击它没有任何反应。奇怪的是,我可以点击按钮下方,它会触发绑定到这些按钮的动作。
让它变得更奇怪 - 当问题发生时,我可以看到有时特定按钮的点击区域(即menuBtn
)与不同的按钮( )重叠prevBtn
。
一直在寻找原因/解决方案。我没有运气阅读了以下帖子:
我有一种预感,这与我在两者之间切换的事实有关Storyboards
- 尽管尝试在界面构建器中设置自动调整大小并没有完成这项工作。
一些可能对任何可能想要帮助的人有所帮助的代码
menuBtn
按下时触发的方法:
- (void)replaceChildStoryboard:(NSString *)storyboardName
{
//remove previos child's view and itself from parent
[currNav removeFromParentViewController];
[currNav.view removeFromSuperview];
//instantiate new storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
UINavigationController *vc = [storyboard instantiateInitialViewController];
//update curr pointer to new child and add it to parent
currNav = vc;
[self addChildViewController:currNav];
[self.view addSubview:currNav.view];
[currNav didMoveToParentViewController:self];
//animate transition
[self slideNavAnimated:NO];
[self navPressed];
}
一些截图
在第三个屏幕截图中,当我点击prevBtn
(下方的那个menuBtn
)时,我会menuBtn
激活操作。(如我画的圆圈所示 - 因此在红色圆圈内点击应该激活prevBtn
但确实会触发menuBtn
。在黑色圆圈中点击应该什么都不做,但会触发prevBtn
)
希望有人可以帮助我找到问题的根源并解决它。
提前致谢。