UITextField 限制输入字符
2015-11-12 11:16
411 查看
使用UITextField的时候,一般都会限制字数。限制字数,听起来简单,实现起来却不简单。
如果输入的只是字母或者数字之类的,直接限制就行。要是输入中文等类似的,那就不行了
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldTextDidChanged:) name:UITextFieldTextDidChangeNotification object:nil];
1.纯字母和数字
2.有中文和日文等
如果输入的只是字母或者数字之类的,直接限制就行。要是输入中文等类似的,那就不行了
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldTextDidChanged:) name:UITextFieldTextDidChangeNotification object:nil];
1.纯字母和数字
- (void)textFieldTextDidChanged:(NSNotification *)noti { if (_textField.text.length > 10) { _textField.text = [_textField.text substringToIndex:10]; }
2.有中文和日文等
- (void)textFieldTextDidChanged:(NSNotification *)noti { //中文算两个字符 UITextField *textField = (UITextField *)noti.object; NSUInteger count = 0,index = 0; NSString *toBeString = textField.text; DDLogInfo(@"length = %lu(%d),text = (%s)%@",strlen([textField.text UTF8String]),textField.text.length,[textField.text UTF8String],textField.text); if (![[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString:@"en-US"]) { UITextRange *selectedRange = [textField markedTextRange]; // 获取高亮部分 UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { for(int i=0; i<toBeString.length; i++){ int num = [toBeString characterAtIndex:i]; if( num < 127) count ++; else count += 2; if (count <= 10) { index = i; } } } } else { for(int i=0; i<toBeString.length; i++){ int num = [toBeString characterAtIndex:i]; if( num < 127) count ++; else count += 2; if (count <= 10) { index = i; } } } if (count > 10) { textField.text = [toBeString substringToIndex:index+1]; } }
相关文章推荐
- LeetCode Longest Increasing Subsequence
- 让UIView转起来
- Android.mk 小细节(LOCAL_CFLAGS 、BUILD_PREBUILT)
- UIImageView 小幅度震动动画
- uialert IOS8
- 我的BluetoothChat示例源码阅读笔记
- Ligerui表格基本操作(三)
- Solve Hibernate Lazy-Init issue with hibernate.enable_lazy_load_no_trans
- Repeated DNA Sequences
- LeetCode---Implement Queue using Stacks
- 设置UIButton的title 闪动效果的解决办法
- paint.setAntiAlias(true);
- IOS开发UI篇--使用UICollectionView实现一个倾斜列表效果
- iOS UIImage部分拉伸——stretchableImageWithLeftCapWidth的使用
- UITableView 的Cell之间的间隔
- UITableView 滑动Cell删除
- Android 非UI线程使用View.post()方法一处潜在的内存泄漏
- UIImage应用与内存管理,UIImage加载图像方法
- UIlabel
- easyui隐藏下拉框