TextInput Cannot Blur on Android
whck6
在 Android 平台上執行 React Native 0.51 遇到的一個問題。
畫面上有 4
個輸入框,我不希望使用者可以手動點擊要輸入的是哪一個,因此我鎖住鎖住手勢事件,然後透過
event
來取得焦點。
iOS 上可以正常運作,使用者可以透過我準備的按鈕把鍵盤彈起,但 Android 使用者按返回鍵把鍵盤收起來(或是系統的行為。如:收到簡訊),就無法在彈起了。
經由實驗的結果發現,假如使用者不是自己按下鍵盤上的完成使鍵盤收起,這將會導致
TextInput
不會呼叫 blur()
.
意思是焦點並沒有消失,導致下次就算呼叫 focus()
也並不會有 state
的改變,為了解決這問題,我的方法是監聽鍵盤被收起的時候,手動 blur()
.
class AAA {
componentDidMount() {
this.keyboardDidHideListener = Keyboard.addListener(
"keyboardDidHide",
this.keyboardDidHide,
);
}
componentWillUnmount() {
this.keyboardDidHideListener.remove();
}
keyboardDidHide = () => {
this.input.blur();
};
}