状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误

Posted

技术标签:

【中文标题】状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误【英文标题】:Wrong NavigationBar position after modal dialog was shown while StatusBar is in "in call" mode 【发布时间】:2017-12-13 18:11:36 【问题描述】:

在我的react-navigation 驱动的应用程序中,我使用模态视图来显示一些视图。在这个模态视图控制器中,我还使用react-native-image-picker 来显示一个图像选择器。问题:当显示第二个模态对话框的同时也显示“通话中”状态栏时,第一个模态对话框的导航栏位置将在通话状态栏下方。这是一个示例(我使用 + Yios 模拟器中切换“通话中”模式):

当状态栏的高度发生变化时,我尝试在包含所有屏幕的第一个组件中调用forceUpdate,但这并不能解决问题。有没有更好的(甚至是已知的?)方法来摆脱这种情况?

【问题讨论】:

npm 上有一个包叫做 react-native-call-detection。您可以使用自定义组件作为标题,并使用调用事件设置填充值来解决此问题。 @htkibar 不幸的是,对于应该在 iOS/RN 中解决的问题,这将是一个非常棘手的解决方法,并且很难跟踪视图状态以确定导航栏是否绘制在方法不正确。 是的。只是想指出一种暂时解决问题的方法。此外,如果重新渲染解决了问题,那么解决问题的潜在方法应该是在设定的时间后强制更新,尽管仍然很麻烦。 在最上面的组件上每 1000 毫秒调用一次 forceUpdate - 不幸的是,根本没有效果。认为问题在于反应原生层之上。 【参考方案1】:

您似乎真的遇到了这个 RN 错误或类似问题:https://github.com/facebook/react-native/issues/972

“解决方案”会像你说的那样老套,但这对于 RN 应用程序来说似乎很正常。

【讨论】:

以上是关于状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误的主要内容,如果未能解决你的问题,请参考以下文章

隐藏导航栏时显示状态栏

当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体

在横向模式下键入时显示搜索建议

加载时显示 C# 延迟模式对话框,同时允许继续执行

收到推送通知时显示模式

单击按钮时显示 jquery 数据表模式对话框不起作用