React Native onKeyPress无法工作?

6

我刚刚放置了一个 TextInput,KeyboardType ={"numeric"},试图查找用户是否输入了“-”,如果是,则需要在 OnChange 中首先使用 event.preventDefault()。后来尝试在 onKeyPress 中操作,但 onKeyPress 没有触发,我只是尝试这样做,但它允许我输入并显示警告合成事件性能问题。

大家帮帮我。


你在哪个平台上进行测试? - Jigar Shah
你正在使用 Android 模拟器进行测试吗? - Jigar Shah
安卓不只是移动设备。 - saiRam89
4个回答

10

您正在使用安卓手机进行测试,而onKeyPress方法是为iOS设计的,请查看文档了解详情。

您可以使用onChangeText来监听文本变化。

示例:

<TextInput
    onChangeText={(text) => this.onFirstNameText(text)}
    returnKeyType={'next'}
    underlineColorAndroid='transparent'
    style={styles.inputColLeft}
/>

2018年更新

onKeyPress现在也支持安卓设备,详见此次提交.

文档说明:

注意:仅处理来自软键盘的输入,硬件键盘输入不会被处理。


还没有使用,但你需要吗?要验证仅数字,您可以检查:https://dev59.com/51wY5IYBdhLWcg3wJk8q - Jigar Shah
onKeyPress现在支持Android。 - Vahid Kharazi
对于Android系统,它只支持默认键盘,对于非默认键盘例如“数字键盘”,它将无法工作。 - Solar1407

2
 const App =()=>{
  const  handleKeyPress = ({ nativeEvent: { key: keyValue } }) => {
      console.log(keyValue);
      if(keyValue === 'Enter')
      {
        console.log("enter");
      }
  };
  return(
    <View>
         <TextInput
            placeholder="Your Password"
            placeholderTextColor="#666666"
            style={styles.inputSearch}
            // onEndEditing={(e)=>handleValidUser(e.nativeEvent.text)}
            onKeyPress={handleKeyPress}
          />
    </View>
  )
}

2
以下是有关合成事件的解决方案:
输入元素:
<Input onKeyPress = {this.keyPress} />

keyPress函数

keyPress = (event) => {

/* this line will solve your error */

event.persist();
console.log(event);
}


1
使用 onChangeText 的方法如下:

像这样:

<TextInput  onChangeText = {(text) => this.getPhone(text)} keyboardType="numeric" autoCapitalize="none" autoCorrect={false} onSubmitEditing={ () => this.addressInput.focus()} style={styles.input} placeholder="phone" placeholderTextColor="rgba(255,255,255,0.6)" underlineColorAndroid="rgba(0,0,0,0.0)" returnKeyType="next"/>

 getPhone = (text) => {
      this.setState({phone: text})
      //use your logic here 

   }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接