UITextView中文输入法输入时对字符长度的限制

<1>在init时候注册notification:

[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)
                                           name:@"UITextFieldTextDidChangeNotification"
                                         object:myTextField];

<2>实现监听方法:

-(void)textFiledEditChanged:(NSNotification *)obj{
   UITextField *textField = (UITextField *)obj.object;
   
   NSString *toBeString = textField.text;
   NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
   if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
       UITextRange *selectedRange = [textField markedTextRange];
       //获取高亮部分
       UITextPosition *position = [textField positionFromPosition:selectedRange.startoffset:0];
       // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
       if (!position) {
           if (toBeString.length > kMaxLength) {
               textField.text = [toBeString substringToIndex:kMaxLength];
           }
       }
       // 有高亮选择的字符串,则暂不对文字进行统计和限制
       else{
         
       }
   }
   // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
   else{
       if (toBeString.length > kMaxLength) {
           textField.text = [toBeString substringToIndex:kMaxLength];
       }
   }
}

<3>在dealloc里注销掉监听方法,切记!

-(void)dealloc{
   [[NSNotificationCenter defaultCenter]removeObserver:self
                                           name:@"UITextFieldTextDidChangeNotification"
                                         object:_albumNameTextField];
}

注:原文地址  http://blog.sina.com.cn/s/blog_60f977e70101g4gj.html

时间: 2024-11-09 00:59:11

UITextView中文输入法输入时对字符长度的限制的相关文章

UITextField中文输入法输入时对字符长度的限制

如题的问题,又是个让我抓狂了大半天的问题,还是做个记录,有与类似问题的同学可参考,但不一定对.具体问题还需具体分析.我遇到的需求是这样的:有一个输入框,输入框内输入文字,文字字数限制在20字. 我采用了UITextField作为我的输入框控件,并且在委托方法: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)s

iOS:UITextField中文输入法输入时对字符长度的限制

如题的问题,又是个让我抓狂了大半天的问题,还是做个记录,有与类似问题的同学可参考,但不一定对.具体问题还需具体分析.我遇到的需求是这样的:有一个输入框,输入框内输入文字,文字字数限制在20字. 我采用了UITextField作为我的输入框控件,并且在委托方法: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)s

JS对输入判断变化屏蔽中文输入法输入时连续触发事件的方法

<input type="text" onfocus="filter_time()" value="xxx" id="wd"> <script> var str = ''; var now = '' function filter_time() { var time = setInterval(filter_staff_from_exist, 100); $(this).bind('blur', fun

Python输出中文到文件时的字符编码问题

今天在使用Python的GUI平台wxPython时,写了一个只有打开.编辑.保存功能的简易笔记本,代码如下: 1 #coding:utf-8 2 import wx 3 4 def load(event): 5 f = open(FileName.GetValue()) 6 Contents.SetValue(f.read()) 7 f.close() 8 9 def save(event): 10 f = open(FileName.GetValue(), 'w') 11 f.write(C

转载--经验总结:应对中文输入法的字符串截断方案(带代码示例)

本文转自:http://www.cnblogs.com/chyingp/p/3599641.html 遇到这么个需求,允许用户修改自己的名片,名片最大长度支持8个汉字(24个字节),当用户输入超过8个汉字,则不允许用户继续输入. 最初的思路:oninput你好 很常见的需求,觉得驾轻就熟,监听input事件,当输入内容发生变化的时候,获得用户输入内容,并进行截断操作(如果超出的话).主要代码如下.一切显得那么美好,直到中文输入法出现. ps:本文用例均在 chrome 版本 33.0.1750.

【Linux基础】Fcitx中文输入法安装

一.安装Fcitx 1. 安装Fcitx所需组件 sudo apt install fcitx fcitx-tools fcitx-config* fcitx-frontend* fcitx-module* fcitx-ui-* presage 2. 移除多余的组件(仅针对非KDE桌面) 因为上面的安装命令为了方便使用了通配符安装,所以会多安装一个fcitx-module-kimpanel,这个组件可能导致在非KDE桌面环境下Fcitx输入中文时不显示候选词框,如果是KDE桌面则无需移除. su

类似baidu搜索 修正jquery的autocomplete在firefox下不支持中文输入法的bug

解决方法: 转自 =============================================================== http://blog.csdn.net/happymagic/article/details/8775123 =============================================================== jQuery.Autocomplete 是jquery的流行插件,能够很好的实现输入框的自动完成(autocomp

JavaScript表单验证,输入中文时字符长度为2

获取输入框中的字符长度进行表单验证,当输入英文时字符长度就是1,当输入中文时字符长度为2. 字符数为4~16位, 上图: 一个中文抵两英文. 上代码 1 btn.addEventListener('click',ov,false); 2 3 function ov(){ 4 var inputValue = text.value.trim(); 5 //去掉最前最后的空格 6 if (countLength(inputValue) < 4 || countLength(inputValue) >

再谈multistage text input(中文输入法)下UITextView的内容长度限制

之前写过一篇<如何更好地限制一个UITextField的输入长度>,在文章最后得到的结论是可以直接使用 UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification; 进行监听,截断超出maxLength的部分. 所以后来我在处理UITextView的内容长度时,也直接参考这个方法: [[NSNotificationCenter defaultCenter] addObserver:self selector:@select