React Native 调用 3 方库后失去对 iOS 状态栏的控制

Posted

技术标签:

【中文标题】React Native 调用 3 方库后失去对 iOS 状态栏的控制【英文标题】:React Native lost control of iOS status bar after calling 3-party library 【发布时间】:2019-05-29 04:06:44 【问题描述】:

我使用的是第 3 方库,它会在调用时隐藏 ios 状态栏。之后,我无法在屏幕上重新显示状态栏。

在React Native中我可以通过StatusBar组件正常控制状态栏。

但是,我尝试调用 iOS 库 https://www.dynamsoft.com/Products/dynamsoft-webcam-sdk.aspx 它会在显示屏幕时隐藏状态栏。 隐藏状态栏后,我无法使用StatusBar.setHidden(false)再次显示它。

它不提示任何错误,只是没有任何效果。

任何人都知道发生了什么以及在这种情况下如何显示状态栏?

【问题讨论】:

请确保 StatusBar.setHidden(false) 将在完全关闭调用屏幕后执行。如果您在关闭调用屏幕之前或之间执行 StatusBar.setHidden(false),则无效。 我确信 StatusBar.setHidden(false) 是在该库屏幕完全关闭后执行的。我在屏幕上添加了一个按钮,并在库屏幕关闭后手动按下。 【参考方案1】:

您可以在屏幕中要显示状态栏的位置添加以下代码

import React,  Component  from 'react';
import  StatusBar  from 'react-native';

class MyComponent extends Component 

componentDidMount() 
   StatusBar.setHidden(false);


或者你也可以这样做

<StatusBar hidden=false />

这将帮助您在所需屏幕中显示状态栏

【讨论】:

正如我的问题所说,StatusBar.setHidden(false) 没有效果【参考方案2】:

下面的解决方法可能有效。

import React,  Component  from 'react';
import  StatusBar  from 'react-native';

class MyComponent extends Component 

componentDidMount() 
   setTimeout(() => StatusBar.setHidden(false);,1000)


【讨论】:

以上是关于React Native 调用 3 方库后失去对 iOS 状态栏的控制的主要内容,如果未能解决你的问题,请参考以下文章

如何在不失去对 React Native 的关注的情况下关闭键盘。(至少显示光标)

react native 隐藏键盘 TextInput失去焦点

React Native TextInput 在 JSX 组件中失去焦点

React Native Custom TextInput 对象在每个字符后失去焦点

适用于 Android 的 AIR 3 Native Extensions - 我/如何包含第 3 方库?

react-native-firebase_messaging:compileReleaseJavaWithJavac