React native 如何在React Native中自动打开键盘?

React native 如何在React Native中自动打开键盘?,react-native,React Native,我的React本机应用程序中有一个屏幕,其中几乎没有文本字段 我想知道是否有任何方式,在屏幕上加载我的关键字自动打开,并集中在我的第一个文本输入字段 我在android中搜索类似于stateAllwaysVisible的东西。当聚焦时,键盘应该自动打开。您可以使用autoFocusprop使其在元素装入时聚焦()由于堆栈导航,所选解决方案对我不起作用(请参阅所选解决方案的“SoundStage”注释) 我将一个新变量openTheKeyboard添加到最初设置为false的状态 我的黑客解决方案

我的React本机应用程序中有一个屏幕,其中几乎没有文本字段

我想知道是否有任何方式,在屏幕上加载我的关键字自动打开,并集中在我的第一个文本输入字段


我在android中搜索类似于
stateAllwaysVisible
的东西。

当聚焦
时,键盘应该自动打开。您可以使用
autoFocus
prop使其在元素装入时聚焦()

由于堆栈导航,所选解决方案对我不起作用(请参阅所选解决方案的“SoundStage”注释)

我将一个新变量
openTheKeyboard
添加到最初设置为
false
的状态

我的黑客解决方案:

componentDidMount() {
  this.setState({ openTheKeyboard: true });
}

componentDidUpdate() {
  if (this.state.openTheKeyboard) {
    this.textInput.focus();
    this.setState({ openTheKeyboard: false });
  }
}
我的方式(在组件渲染上聚焦和显示键盘时出现问题)

从'react native'导入{InteractionManager,TextInput};
...
inputRef=React.createRef();
componentDidMount(){
这个。focusInputWithKeyboard()
}
focusInputWithKeyboard(){
InteractionManager.runAfterInteractions(()=>{
this.inputRef.current.focus()
});
}
render(){
}

这似乎在我的模拟器中工作。尚未在真实设备上确认

构造函数(道具){
超级(道具);
this.buildNameTextInput=React.createRef();
}
{
this.buildNameTextInput=true
this.props.setSaveBuildModal(true)
}}
>
保存构建
this.props.setCurrentBuildName(buildName)}
值={this.props.buildName}
/>
  • 我需要构造函数来注册引用
  • 处理程序将局部变量设置为true
  • 自动聚焦将触发要聚焦的字段。键盘有时会在android模拟器上打开(我无法解释)
  • ref是对DOM元素的引用

  • 您可以将对TextInput的引用维护为 textInputRef
    使用这个.textInputRef.focus()

    这个技巧对我很有效

    setTimeout(() => InputRef.current.focus(), 100)
    

    看起来我在浏览文档时错过了这一点:(…让我再试一次…
    autoFocus
    在通过堆栈导航加载页面时似乎不会触发。它最终会聚焦
    textInput
    ,但不会打开键盘。通过refs手动聚焦不会触发键盘。有一个键盘。discover(),但我没看到演出在React Native docs上也是如此。@Dan这里也有同样的问题。试图通过ref聚焦文本输入并打开键盘。您找到解决方案了吗?此答案不回答问题,它是针对特定情况的解决方法。如果不想/可以使用自动聚焦,则此答案将不起作用。键盘未显示在焦点上可能是什么原因如果在调用
    .focus()
    时键盘未显示?
    setTimeout(() => InputRef.current.focus(), 100)