美文网首页
iOS系统输入法限制输入字数的误区

iOS系统输入法限制输入字数的误区

作者: Trigger_o | 来源:发表于2018-11-06 14:31 被阅读0次

    以textField为例,通常在限制输入字数时,通过监听通知UITextFieldTextDidChangeNotification或者给textField添加事件addTarget,

    addTarget 事件

    这么写如果限制一两百字,可能没什么感觉,如果是限制几个字,就会出现下面这种情况

    这里限制10个字的输入

    按五次键盘

    在不确定汉字的时候,也就是还没有点击候选汉字的时候,textField里是带有空格的,按五次此时的text.length已经是10了,继续再按键盘或者点击候选文字,textField里直接就会变成"a a a a a "这种带着空格的字母,这种情况要想正常输入,就得一个字一个字输入非常难操作,而且最后一个字保不准能不能输入进去.

    一种比较正确的写法应该是:

    正确的限制方法

    分析下这段代码

    markedTextRange是textField的属性,是输入时,等待转换汉字的那段选中字符,虽然也是蓝色选中,但是和selectedTextRange是不同的

    这里newText就是那段蓝色选中的字符了,每次点按键盘都会走一次,newText都会增加一个字母,重点来了,当点击候选汉字时,会连续调用两次这个textFieldDidChange方法,第一次newText会变成转换的汉字字符串,第二次newText是空字符串.

    于是只要newText是空的,就说明在添加汉字,至于输入英文,英文不会出现markedTextRange,因此也是正常起效的.

    相关文章

      网友评论

          本文标题:iOS系统输入法限制输入字数的误区

          本文链接:https://www.haomeiwen.com/subject/xjhuxqtx.html