2017-06-15 112 views
1

我一直在試圖創建一個自定義反應原生自定義鍵盤事件。 具體來說,我一直在嘗試檢測退格鍵。反應原生android鍵盤事件

在我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

嗨,亨利,我遇到了同樣的問題。那麼,你有解決方案嗎? –

+0

Hi Tam, 我們決定調整Android的用戶界面,並添加一個單獨的刪除按鈕,不涉及到鍵盤。 但是,似乎有一個開放的拉請求,以包括此功能之間的其他Android鍵盤功能。 https://github.com/facebook/react-native/pull/14720#issuecomment-311192996 希望這會在更高版本的反應原生版中添加。 – Henry

回答

0

對android開發做了一些更多的研究。

使用Keyevents檢測按鍵是不可靠的。

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

軟輸入法都可以使用輸入 多個文本和創造性的方式,也不能保證一個軟鍵盤上的任意按鍵將 生成的關鍵事件:這是留給IME的自由裁量權,並在 事實發送這樣的事件是不鼓勵的。