react native TextInput输入限制字数长度在安卓和iOS设备上部分系统键盘输入问题

前奏

对于正在学习RN和已经在RN这条路上摸爬滚打很久的看官应该都知道,虽然RN的跨平台做的很不赖,但是也有一些小细节是无法兼顾的,今天兄弟就遇到了一个小问题。(小问题有时候却很致命)。

问题描述

安卓和iOS很多机型上在输入汉字的过程中会出现将字母(拼音)先输入到输入框中参与计算,一般情况下不会有问题,但如果要做字数限制时问题就出现了。例如,限制只能输入10个字符。大部分人的做法是给TextInput加MaxLength={10}来限制字数,这看起来也十分合情合理,没有任何怀疑,毕竟这是官方提供的属性方法。但恰恰是这个属性导致在输入时出现超界问题。比如下图中,当先输入6个汉字,再输入2个字“测试”的时候,拼音字母 "cesh" 参与计算,已经达到了限制的10个字符,因此导致无法输入10个汉字就不能在继续输入了。

这看似是个小问题,但对于使用app的用户来说,体验就特别差了,顾客就是上帝,上帝不满意那问题是不是很大呢!

解决方法

当然,问题描述清楚了,就得解决。经过仔细端详,终于找到了解决方法。毫不吝啬的分享给各位看官,如果觉得不肖,可以忽略。下面则是解决方法

最后

虽然是个小问题,但是搜遍全网都没找到对症的猛药,在此做个好人好事,希望能帮到各位有需求的看官。

<View style={styles.inpContainer}>
            <View style={styles.inpWrap}>
              <TextInput
                style={styles.input}
                ref='inputText'
                multiline
                onChangeText={(text) => {
                  this.setState({
                    wordValue: text
                  }, () => {
                    this.setState({ surplusLen: defaultLen - text.length });
                  });
                }}
                keyboardType='default'
                value={wordValue}
                placeholder='请输入'
                placeholderTextColor={fontColorSecDeepGray}
              />
              <Text style={styles.wordLen}>{surplusLen}</Text>
            </View>
            {
              surplusLen < 0 &&
              <View style={{ backgroundColor: '#FFF272', padding: px2dp(16) }}>
                <Text style={{ color: 'red', fontSize: px2dp(26) }}>
                  输入内容字数不能超过
                  {defaultLen}
                  个
                </Text>
              </View>
            }

          </View>

解决后如下图:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值