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

Har*_*uja 12 react-native

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

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

我正在寻找像stateAlwaysVisibleandroid 这样的东西.

Zia*_*rno 24

<TextField />聚焦时,键盘应自动打开.您可以使用autoFocus道具在元素安装时使其聚焦(链接)

  • refs手动对焦不会触发键盘.有一个Keyboard.dismiss(),但我也没有在React Native文档上看到show(). (16认同)
  • 当页面通过堆栈导航加载时,`autoFocus`似乎不会触发.它最终聚焦`textInput`但不打开键盘. (9认同)
  • @丹这里同样的问题。尝试通过ref集中TextInput并打开键盘。您找到解决方案了吗? (2认同)
  • 这个答案并没有回答问题,它是针对特定情况的解决方法。如果一个人不想/不能使用自动对焦,那么这个答案将不起作用。键盘未显示在焦点上 (2认同)

小智 22

这个技巧对我有用

setTimeout(() => InputRef.current.focus(), 100)
Run Code Online (Sandbox Code Playgroud)


ami*_*ein 12

另一个解决方案:)

import React, { useRef } from 'react'

export function mycomponent(props) {
   const inputRef = useRef();
   
   return(
         <TextInput 
           ref={inputRef}
           onLayout={()=> inputRef.current.focus()}>
         </TextInput>
   )
}

Run Code Online (Sandbox Code Playgroud)

  • 这是可行的最佳答案!如果您尝试将输入集中在模态中,请使用 Modal onShow 事件而不是 TextInput onLayout,它将流畅地工作。&lt;Modalvisible={visible} onShow={() =&gt; inputRef.current?.focus()}/&gt;&lt;TextInput ref={inputRef} /&gt;&lt;/Modal&gt; (2认同)

bob*_*obu 10

我的方式(在组件渲染上聚焦和显示键盘时出现问题)

import { InteractionManager, TextInput } from 'react-native';

...

inputRef = React.createRef();

componentDidMount() {
  this.focusInputWithKeyboard()
}

focusInputWithKeyboard() {
  InteractionManager.runAfterInteractions(() => {
    this.inputRef.current.focus()
  });
}

render() {
  <TextInput ref={this.inputRef} />
}
Run Code Online (Sandbox Code Playgroud)