美文网首页
使用系统键盘输入中文出现乱码

使用系统键盘输入中文出现乱码

作者: follow_er | 来源:发表于2017-08-15 10:06 被阅读17次

    textView的代理方法textViewDidChange方法系统会将textView的联想拼音也输出,此时不要为自己的成员变量赋值, 或者需要对textView的输入模式进行判断.
    //判断

    -(void)textViewDidChange:(UITextView *)textView{  
          
        NSString *toBeString = textView.text;  
          
        NSString *lang = [(UITextInputMode*)[[UITextInputMode activeInputModes] firstObject] primaryLanguage]; // 键盘输入模式  
        if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写  
            UITextRange *selectedRange = [textView markedTextRange];  
            //获取高亮部分  
            UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];  
            // 没有高亮选择的字,则对已输入的文字进行字数统计和限制  
            if (!position) {  
                    if (toBeString.length >= self.limitMaxNum) {  
                        textView.text = [toBeString substringToIndex:self.limitMaxNum];  
                    }  
                _textLabel.text=[NSString stringWithFormat:@"%lu/%@",(unsigned long)_textView.text.length, @(self.limitMaxNum)];  
                [_textLabel sizeToFit];  
                  
            } // 有高亮选择的字符串,则暂不对文字进行统计和限制  
            else{  
                  
            }  
        }  
        // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况  
        else{  
                if (toBeString.length >= self.limitMaxNum) {  
                    textView.text = [toBeString substringToIndex:self.limitMaxNum];  
                }  
            _textLabel.text=[NSString stringWithFormat:@"%lu/%@",(unsigned long)_textView.text.length, @(self.limitMaxNum)];  
            [_textLabel sizeToFit];  
        }  
          
    }  
    

    或者需要在textViewDidEndEditing方法中为自己的属性赋值

    相关文章

      网友评论

          本文标题:使用系统键盘输入中文出现乱码

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