状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误
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 来显示一个图像选择器。问题:当显示第二个模态对话框的同时也显示“通话中”状态栏时,第一个模态对话框的导航栏位置将在通话状态栏下方。这是一个示例(我使用 ⌘ + Y 在 ios 模拟器中切换“通话中”模式):
当状态栏的高度发生变化时,我尝试在包含所有屏幕的第一个组件中调用forceUpdate
,但这并不能解决问题。有没有更好的(甚至是已知的?)方法来摆脱这种情况?
【问题讨论】:
npm 上有一个包叫做 react-native-call-detection。您可以使用自定义组件作为标题,并使用调用事件设置填充值来解决此问题。 @htkibar 不幸的是,对于应该在 iOS/RN 中解决的问题,这将是一个非常棘手的解决方法,并且很难跟踪视图状态以确定导航栏是否绘制在方法不正确。 是的。只是想指出一种暂时解决问题的方法。此外,如果重新渲染解决了问题,那么解决问题的潜在方法应该是在设定的时间后强制更新,尽管仍然很麻烦。 在最上面的组件上每 1000 毫秒调用一次forceUpdate
- 不幸的是,根本没有效果。认为问题在于反应原生层之上。
【参考方案1】:
您似乎真的遇到了这个 RN 错误或类似问题:https://github.com/facebook/react-native/issues/972
“解决方案”会像你说的那样老套,但这对于 RN 应用程序来说似乎很正常。
【讨论】:
以上是关于状态栏处于“通话中”模式时显示模式对话框后导航栏位置错误的主要内容,如果未能解决你的问题,请参考以下文章