最近在開發項目的需求中,測試同學提了一個bug,在如下頁面中,有三個輸入框,在iOS手機上,輸入完之後,無法隱藏鍵盤;安卓手機上,鍵盤都有收起按鈕,所以沒有這個問題。
想到的解決方案:
1、讓輸入框失去焦點,
2、點擊背景空白位置,監聽鍵盤Keyboard事件,調用dismiss()方法隱藏軟鍵盤。
以上兩個方案,都需要寫一堆代碼,忽然想到之前有類似的頁面需求,重新review了一下代碼,發現只需要在最外層佈局加一個Scrollview即可解決。
<ScrollView style={{flex: 1}}>
<View style={styles.container}>
... 其他代碼
<View style={{
marginTop: 17,
height: 300,
paddingHorizontal: 12,
paddingTop: 12,
paddingBottom: 24,
width: deviceWidth - 24,
backgroundColor: '#F9F9FB',
marginHorizontal: 12
}}>
<TextInput
style={{padding: 0}}
multiline={true}
maxLength={800}
textAlignVertical={'top'}
underlineColorAndroid={'transparent'}
placeholder={'請填寫您的問題或建議'}
value={this.state}
placeholderTextColor={'#999999'}
onChangeText={(text) => this.setState({
text
})}
/>
</View>
</View>
</ScrollView>
歡迎關注個人公衆號:君偉說。