我正在构建一个本机应用程序。我有一个<TextInput>
,当发生某些事情时,我希望<TextInput>
成为焦点。 <TextInput>
个实例上唯一记录的方法是.isFocused()
和.clear()
- 这似乎都不是我想要的。我显然想要.focus()
。
我发现这个仅限iOS的selectedState
道具似乎提供了我正在寻找的东西。 The docs说:
iOS selectionState DocumentSelectionState
DocumentSelectionState
的一个实例,这是一个负责维护文档选择信息的状态。可以使用此实例执行的某些功能是:
blur()
focus()
update()
您可以在
中引用DocumentSelectionState
vendor/document/selection/DocumentSelectionState.js
我不清楚如何运用这个道具,我还没有在网上找到任何例子。文档页面上发布的冗长示例代码不能使用它。
有人能告诉我这可能是什么样子吗?这是我最好的猜测:
import React, {
Component
} from 'react';
import {
// the "DocumentSelectionState.js" file mentioned in the docs
// lives inside react-native, so hopefully it's exported
DocumentSelectionState,
TextInput,
TouchableHighlight,
View
} from 'react-native';
import Styles from './style';
export default class Scene extends Component {
constructor(props) {
super(props);
// get my hands on "An instance of DocumentSelectionState"
// which I can pass to the TextInput, and whose .focus()
// method I can call
this.text1DSS = new DocumentSelectionState();
}
render() {
return (
<View style={Styles.CONTAINER}>
<TextInput style={Styles.TEXT_INPUT_1}
// provide my own instance of DocumentSelectionState
// to the TextInput instead of whatever is the
// default source
selectionState={this.text1DSS}
/>
<TouchableHighlight style={Styles.BUTTON_FOR_FOCUSING_INPUT}
onPress={this.onPressButton}
>
<View>
<Text>click me to focus textinput</Text>
</View>
</TouchableHighlight>
</View>
);
}
onPressButton = (event) => {
// whenever I want to, I can invoke .focus() on the DSS
// that's linked to the TextInput
this.text1DSS.focus();
};
}
不幸的是,该代码不会运行:
undefined不是构造函数(评估&#39; new _reactNative.DocumentSelectionState()&#39;)
我认为这意味着本地反应并没有导出DocumentSelectionState
成员(或者至少我的版本不是{0.23,仍然是documents the prop)。
我还没有能够弄清楚如何在vanilla RN设置中访问DocumentSelectionState
,所以我无法真正测试我的理论。
有没有人在使用这个东西?
答案 0 :(得分:3)
我能够访问.focus()
方法的唯一方法是通过this.refs
您的代码看起来像:
import React, { Component } from 'react';
import { TextInput, TouchableHighlight, View } from 'react-native';
import Styles from './style';
export default class Scene extends Component {
render() {
return (
<View style={Styles.CONTAINER}>
<TextInput
style={Styles.TEXT_INPUT_1}
ref={'input'}
/>
<TouchableHighlight style={Styles.BUTTON_FOR_FOCUSING_INPUT}
onPress={this.onPressButton}
>
<View>
<Text>click me to focus textinput</Text>
</View>
</TouchableHighlight>
</View>
);
}
onPressButton = (event) => {
this.refs.input.focus()
};
}
希望有所帮助