我的React Native应用程序中有一个屏幕,我的文本字段很少。
我想知道是否有任何方式在屏幕上加载我的关键字会自动打开并关注我的第一个文字输入字段?
我在android中搜索stateAlwaysVisible
之类的内容。
答案 0 :(得分:21)
当<TextField />
聚焦时,键盘应自动打开。您可以使用autoFocus
道具在元素装入时使其聚焦(link)
答案 1 :(得分:3)
我的方式(在组件渲染上聚焦和显示键盘时出现问题)
import { InteractionManager, TextInput } from 'react-native';
...
inputRef = React.createRef();
componentDidMount() {
this.focusInputWithKeyboard()
}
focusInputWithKeyboard() {
InteractionManager.runAfterInteractions(() => {
this.inputRef.current.focus()
});
}
render() {
<TextInput ref={this.inputRef} />
}
答案 2 :(得分:1)
这个技巧对我有用
setTimeout(() => InputRef.current.focus(), 100)
答案 3 :(得分:0)
由于堆栈导航,所选解决方案对我不起作用(请参阅所选解决方案上“ SoundStage”的注释)
我向初始设置为openTheKeyboard
的状态添加了一个新变量false
。
我的hacky解决方案:
componentDidMount() {
this.setState({ openTheKeyboard: true });
}
componentDidUpdate() {
if (this.state.openTheKeyboard) {
this.textInput.focus();
this.setState({ openTheKeyboard: false });
}
}
答案 4 :(得分:0)
这似乎在我的模拟器中起作用。尚未在真实设备上确认。
constructor(props) {
super(props);
this.buildNameTextInput = React.createRef();
}
<TouchableOpacity
style={styles.mainButton}
onPress={() => {
this.buildNameTextInput = true
this.props.setSaveBuildModal(true)
}}
>
<Text style={styles.mainButtonText}> Save Build </Text>
</TouchableOpacity>
<TextInput
autoFocus={!!this.buildNameTextInput}
ref={this.buildNameTextInput}
placeholder="Type a Name"
autoCapitalize="words"
style={{...styles.heroBtnText, marginVertical: 50}}
onChangeText={buildName => this.props.setCurrentBuildName(buildName)}
value={this.props.buildName}
/>
答案 5 :(得分:0)
您可以将 TextInput 的引用保持为 文本输入引用 并使用 this.textInputRef.focus()