识别React Native中的Return Key操作

Nim*_*nya 26 ios react-native

我有一个TextInput我启用multiline的真实.事情是按下Return键后键盘不会隐藏.它走向了一条新的路线.所以我希望使用react-native-dismiss-keyboard.要利用这一点,我需要确定Return键操作.这该怎么做?

<TextInput
    style={styles.additionalTextInput}
    multiline={true}
    autoCapitalize="sentences"
    autoCorrect={true}
    onChangeText={(text) => this.setState({text})}
    keyboardType="default"
    returnKeyType="done"
    onKeyPress={(keyPress) => console.log(keyPress)}
    placeholder="Enter text here..."
/>
Run Code Online (Sandbox Code Playgroud)

Bru*_*Lee 69

我用的是onSubmitEditing道具.例如

<TextInput style={[styles.textInput]}
  placeholder='??'
  placeholderTextColor='#bbb'
  onChange={(event) => {
    this.searchChange(event.nativeEvent.text)
  }}
  returnKeyType='search'
  autoFocus={true}
  value={ this.props.searchName }
  selectionColor={colors.orangeColor}
  onSubmitEditing={this.searchSubmit}
  clearButtonMode="while-editing"
/>
Run Code Online (Sandbox Code Playgroud)


Nim*_*nya 21

好的,找到了解决方案.

<TextInput
    style={styles.additionalTextInput}
    multiline={true}
    autoCapitalize="sentences"
    autoCorrect={true}
    onChangeText={(orderInstructions) => this.setState({orderInstructions})}
    keyboardType="default"
    returnKeyType="done"
    onKeyPress={this.handleKeyDown}
    placeholder="Enter text here..."
/>

handleKeyDown: function(e) {
    if(e.nativeEvent.key == "Enter"){
        dismissKeyboard();
    }
},
Run Code Online (Sandbox Code Playgroud)

dismissKeyboard方法来自react-native-dismiss-keyboard.

这对我来说非常适合.

  • onKeyPress只是iOS,Android怎么样? (12认同)
  • 你可以从'react-native'`导入{Keyboard}并调用`Keyboard.dismiss()`.只需2美分,所以你真的不需要`react-native-dismiss-keyboard. (12认同)

shi*_*ngg 7

如果您使用 with multiline={true},该return键还会在调用 之前在文本中添加换行符onSubmitEditing。此外,键盘不会自动关闭,让您import { Keyboard } from 'react-native'调用Keyboard.dismiss()onSubmitEditing。

一个更简单的解决方案是使用blurOnSubmit={true}自动关闭键盘并防止return键注册为newline.

  • 当 multiline=true 时,该解决方案实际上效果最好 (5认同)
  • 与“多行”完美配合! (5认同)
  • 这是最简单的答案。 (2认同)