web-dev-qa-db-ja.com

「Enter」キーがReact Native)でonKeyPressをトリガーしないのはなぜですか?

OnKeyPressイベントリスナーをテキスト入力に追加したので、ユーザーが[完了]をクリックするか、電話のキーボードで[Enter]をクリックすると、searchProducts関数が呼び出されます。 onSubmitタイプのイベントリスナーオプションを期待していましたが、そのようなものを見つけることができなかったので、今は押された各キーを調べるだけに頼っています。 'j'や 'x'などの文字キーが押されると、onKeyPressイベントがトリガーされ、searchProducts関数が呼び出されます。ただし、マウスで[完了]をクリックしてもORキーボードのEnterキーを押しても何も起こりません。これを取得してonKeyPressイベントリスナーをトリガーするにはどうすればよいですか?)

searchProducts = (e) => {
    if (e.nativeEvent.key == "Enter"){
        this.props.searchFunc(this.state.term);
    }
}

<TextInput 
    ref='searchBar'
    style={styles.searchInput} 
    placeholder={placeholder}

    onChangeText={this.searchSuggestions}
    onKeyPress={this.searchProducts.bind(this)}
    underlineColorAndroid="transparent" 
/>
4
FairyQueen

onSubmitEditing を使用できます。これは次のとおりです。

テキスト入力の送信ボタンが押されたときに呼び出されるコールバック。 multiline = {true}が指定されている場合は無効です。

キーボードの「完了」ボタンを押した後に呼び出されます。

onKeyPressは、リターンキーを押したときにトリガーされる必要があります。このページに別のイベントがあり、このイベントがトリガーされないようにするイベントがあるかどうかを確認してください。

event.stopPropagation()

0
bennyh