限制一个UITextField的输入长度
来源:互联网 发布:淘宝怎么联系店家客服 编辑:程序博客网 时间:2024/04/27 17:07
1.
- (void)textFieldDidChange:(UITextField *)textField{ if (textField == self.titleField) { if (textField.text.length > 20) { textField.text = [textField.text substringToIndex:20]; } }}
2。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString *)string这个委托方法没有响应最后拼音到汉字的过程,当我发现这个问题时,问题便也差不多得到了解决。因为在之前向微博上的一个朋友咨询时,他告诉我可以注册这个观察者 UITextInputCurrentInputModeDidChangeNotification在它的监听下可以得到中文。我刚开始时候理解错了他的意思,以为得到的就是最终选中的汉字,而中间输入的拼音并不会被得到。但其实这个监听,比以上的委托方法多了最后一步而已,即从拼音到中文的过程。所以实现的代码如下。<1>在init时候注册notification:[[NSNotificationCenterdefaultCenter]addObserver:self selector:@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{ [[NSNotificationCenterdefaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:_albumNameTextField];}
3.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; { //string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反if ([string isEqualToString:@"\n"]) //按会车可以改变 { return YES; } NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容 if (self.myTextField == textField) //判断是否时我们想要限定的那个输入框 { if ([toBeString length] > 20) { //如果输入框内容大于20则弹出警告 textField.text = [toBeString substringToIndex:20]; UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease]; [alert show]; return NO; } } return YES; }
4.
//设置键盘类型self.textField.keyboardType = UIKeyboardTypeASCIICapable;define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"//判断是否是数字,不是的话就输入失败- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{NSCharacterSet *cs;cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串BOOL canChange = [string isEqualToString:filtered];return self.textField.text.length>=5?NO: canChange;}
0 0
- 限制一个UITextField的输入长度
- 限制一个UITextField的输入长度
- 限制UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 20151130如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 数据排列
- poj3349(Hash)
- jQuery中json对象与json字符串互换
- 完全搬家了
- 浏览器跨域通信
- 限制一个UITextField的输入长度
- 编译器做的那些事儿
- 实现无限自动循环的Viewpager,广告轮询页面
- scoper_ptr与auto_ptr
- 动态规划---三角矩阵最小路径
- poj 1113 Wall
- Calendar 的set()方法
- HTTP500错误:%1不是有效的 win32应用程序(64位转换32位)
- Redux 学习笔记(二)