iOS-UI程序员iOS 开发

iOS TextField 关于中文字数限制包含表情

2016-04-22  本文已影响535人  CZF峰峰

TextField 限制字数的方法

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:_textField.text];
[_textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged];
NSInteger length;//定义length来保存字数
-(void)textFieldEditChanged:(UITextField *)textField
{

 
    //字数限制
    NSInteger WordCount = 10;
    NSString *toBeString = textField.text;
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
    if (!position)
    {
        if (toBeString.length > WordCount && textField.markedTextRange == nil)
        {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:WordCount];
            if (rangeIndex.length == 1)
            {
                textField.text = [toBeString substringToIndex:WordCount];
            }
            else
            {
                textField.text = [toBeString substringWithRange:NSMakeRange(0, length)];
            }
        } else {
            length = toBeString.length;
        }
    }
}

总结

现在对于字数限制,我是比较推荐使用我现在用的这种,符合中文的需求
之前其实并没有写那么复杂,只是写了如果大于字数限制,就直接切割多少个字符限制的字符串
后来因为发现表情会占用两个字节,如果你最后刚好9个,多一个表情就会变成11,切割变成了10,就会照成表情的不完整,会出现比较严重的bug,在网上综合例子弄了自己最适合的,或许有更好的,欢迎拍砖~

虽然觉得自己学的不好,但也是慢慢累积,希望有一天能够帮助到别人,不能一味的总是获取别人的成果.

上一篇下一篇

猜你喜欢

热点阅读