2017-06-15 7 views
1

私はカスタムの反応ネイティブカスタムキーボードイベントを作成しようとしています。 特に、私はバックスペースキーを検出しようとしています。私には私のMainApplication.javaネイティブアンドロイドキーボードイベントに反応する

public boolean onKeyUp(int keyCode, KeyEvent event) { 

    // Filter for delete key being pressed 
    if (event.getAction() == KeyEvent.DEL) { 
    getReactNativeHost().getReactInstanceManager().getCurrentRea‌​ctContext() 
    .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 
    .emit("onKeyPressed", keyCode); 
    } 
    return true; 
} 

は、コンポーネントに反応し

componentDidMount() { 
    if (Platform.OS === 'android') { 
    DeviceEventEmitter.addListener('onKeyPressed', this.handleKeyPress); 
    } 
} 

componentWillUnmount() { 
    if (Platform.OS === 'android') { 
     DeviceEventEmitter.removeListener('onKeyPressed'); 
    } 
} 

誰かがイベントを解雇されていない理由として、私にいくつかのアイデアを与えることはできますか?

+0

こんにちはHenry、私は同じ問題を抱えています。だから、解決策はありましたか? –

+0

こんにちはTam、 アンドロイドのUIを調整し、キーボードに関係のない別の削除ボタンを追加することにしました。 しかし、この機能を他のアンドロイドキーボード機能に含めるオープンプルリクエストがあるようです。 https://github.com/facebook/react-native/pull/14720#issuecomment-311192996 これは、反応ネイティブのそれ以降のバージョンで追加されることを望みます。 – Henry

答えて

0

もう一度アンドロイドの開発について調べてみましょう。

キー押下を検出するためのキーイベントの使用は信頼性がありません。これはに任されている:

https://developer.android.com/reference/android/view/KeyEvent.html

としてソフト入力方法が テキストを入力する複数の及び本発明の方法を使用することができ、ソフトキーボードの任意のキーを押して キーイベントを発生させるという保証はありませんIMEの裁量があり、そのような出来事を送っている事実は ではお勧めできません。

関連する問題