最近在開發項目的需求中,測試同窗提了一個bug,在以下頁面中,有三個輸入框,在iOS手機上,輸入完以後,沒法隱藏鍵盤;安卓手機上,鍵盤都有收起按鈕,因此沒有這個問題。
佈局
想到的解決方案:
一、讓輸入框失去焦點,
二、點擊背景空白位置,監聽鍵盤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>
歡迎關注我的公衆號:君偉說。
flex