在React Native上突出显示输入组件中的文本时出现安卓问题。
重启应用程序时功能正常,您可以打开和关闭输入框,输入和发送消息如下:
现在,当您按住文本以突出显示它(因此您可以复制/粘贴/剪切文本)时会出现问题:
发生这种情况后,关闭并重新打开文本框会产生相同的效果(显示底栏导航)。键盘现在看起来重叠在屏幕顶部,因为下面的文字正在呈现,就像键盘被最小化一样,无论它是否处于活动状态。
这个方面如何破坏键盘应用程序的状态?有人可以链接或通知我如何处理或访问Android顶部显示的复制/粘贴功能吗?没有意义的是,一旦发生这种情况,整个应用程序就会因键盘输入而中断 - 您可以通过重新启动应用程序再次使其工作。
相关代码如下(如果有什么遗漏的话):
DeviceEventEmitter代码:
componentDidMount: function(){
let context = this,
DeviceEventEmitter.addListener('keyboardWillShow', function(e: Event) {
context.setState({
height: context.listViewMaxHeight - e.endCoordinates.height + 50,
});
});
DeviceEventEmitter.addListener('keyboardWillHide', function(e: Event) {
context.setState({
height: context.listViewMaxHeight,
})
});
}
组件渲染功能中的TextInput组件:
<View style={styles.textInputContainer}>
<TextInput
maxNumberOfLines={8}
multiline={true}
autoFocus={false}
editable={true}
numberOfLines= {5}
ref='textInput'
onChangeText={this.onChangeText}
style={[styles.textInput, {height: context.props.textInputHeight}]}
placeholder={context.props.placeholder}
placeholderTextColor="#5A5A5A"
value={context.state.text}/>
<Button
style={styles.sendButton}
onPress={this._onPress}
disabled={this.state.disabled}>
Send </Button>
</View>
答案 0 :(得分:0)
解决这个问题的主要第一部分是使用keyboardDidShow和keyboardDidHide而不是keyboardWillShow和keyboardWillHide。 (谢谢@pinewood)
DeviceEventEmitter.addListener('keyboardDidShow', function(e: Event) {
context.setState({
height: context.listViewMaxHeight - e.endCoordinates.height + 50,
});
});
DeviceEventEmitter.addListener('keyboardDidHide', function(e: Event) {
context.setState({
height: context.listViewMaxHeight,
})
});
第二个组件是确保使用清单来获得所需的键盘功能,目前我们改为:
<activity android:windowSoftInputMode="stateUnspecified|adjustPan" />
键盘问题在这里也有详细说明 - https://github.com/exponentjs/react-native-tab-navigator/issues/48