1. 程式人生 > >TextInput元件在ios上自帶輸入法下無法輸入中文的情況

TextInput元件在ios上自帶輸入法下無法輸入中文的情況

最近,遇到了一個情況,react-native的TextInput元件在ios平臺只有自帶輸入法(沒有安裝其他的第三方輸入法)的情況下,沒有辦法輸入中文。

程式碼如下:

情況1:

<TextInput
    underlineColorAndroid="transparent"
    style={{height: 40, flex:1,paddingHorizontal:6}}
    onChangeText={(text) => this.setState({taskName : text})}
    value={this.state.taskName}     //初始值為空字串
    placeholder='新增任務名稱'
/>

情況2:

<TextInput 
    underlineColorAndroid="transparent"
    multiline={true}
    style={{
         borderWidth: 1,
         borderColor: '#E8E8E8',
         borderRadius: 6,
         height: 180,
         padding: 10,
         textAlignVertical:'top',
    }}
    defaultValue={this.state.taskDesc}       //初始值為空字串
    placeholder='請新增描述'
    onChangeText={(text) => this.setState({taskDesc : text})}
/>

在以上兩種情況下,用ios的自帶輸入法輸入中文時,沒有可以選擇的中文字元,只能輸入英文。

解決辦法:去除 value 或 defaultValue 屬性!!!

即:

<TextInput
    underlineColorAndroid="transparent"
    style={{height: 40, flex:1,paddingHorizontal:6}}
    onChangeText={(text) => this.setState({taskName : text})}
    placeholder='新增任務名稱'
/>

//或

<TextInput 
    underlineColorAndroid="transparent"
    multiline={true}
    style={{
         borderWidth: 1,
         borderColor: '#E8E8E8',
         borderRadius: 6,
         height: 180,
         padding: 10,
         textAlignVertical:'top',
    }}
    placeholder='請新增描述'
    onChangeText={(text) => this.setState({taskDesc : text})}
/>

​​​​​​​文章僅為本人學習過程的一個記錄,僅供參考,如有問題,歡迎指出!