iOS编程-UITextView固定长度输入文本
2014-01-22 15:04
465 查看
一般思路 对于文本输入框如果要限制输入长度,一般判断一下当前长度 如果长度大于固定长度就限制无法输入,在ios上由于存在中英文键盘的输入,要做到固定长度输入 稍显复杂些 ,下面是我的方法,应该会有更好的,有待优化
实现的主体方法 UITextView的回调
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString*)text
首先我们要了解 回调的这个函数 都会给我们什么
textview 当前textview中的内容
range 当前textview的location 如果输入length为0 删除length为1
text 我们输入的内容
问题点
最大的问题就在于中文键盘输入中文的时候 由于在输入的每次都会激活回调方法 所以textview的length会增加,如果单独用网上的一些方法类似
if (range.location >=MaxWords)
return NO;
return YES;
这样判断会导致中文输入不完整 例如我的限制字数为10 当输入了hello 在输入中文的shijie(世界)会因为到i已经满10而无法输入。
针对这个问题
粗劣代码如下 只是个人的一个思路,例如还有中英文输入混合的情况
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text{
NSString *lang
= [[UITextInputMode currentInputMode] primaryLanguage];
if ([text length]==0)
{
if (self.maxWords<</span>maxWordsConst)
{
self.maxWords +=1;
}
return YES;
}
else {
if ([lang isEqualToString:@"zh-Hans"]&&![text isMatchedByRegex:@"[\u4e00-\u9fa5]"]&&[textlength]==1)
{ //如果输入键盘为中文 并且输入的不为中文,长度为1(中文输入条上全英文) 就算达到上限也是可以输入的
return YES;
}
else{
if ([textView.text length]+[text length]
> maxWordsConst){
self.maxWords = 0;
textView.text = [textView.text substringToIndex:maxWordsConst];
return NO;
}
else {
self.maxWords = maxWordsConst -
([textView.text length]+[text length]);
return YES;
}
}
}
}
实现的主体方法 UITextView的回调
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString*)text
首先我们要了解 回调的这个函数 都会给我们什么
textview 当前textview中的内容
range 当前textview的location 如果输入length为0 删除length为1
text 我们输入的内容
问题点
最大的问题就在于中文键盘输入中文的时候 由于在输入的每次都会激活回调方法 所以textview的length会增加,如果单独用网上的一些方法类似
if (range.location >=MaxWords)
return NO;
return YES;
这样判断会导致中文输入不完整 例如我的限制字数为10 当输入了hello 在输入中文的shijie(世界)会因为到i已经满10而无法输入。
针对这个问题
粗劣代码如下 只是个人的一个思路,例如还有中英文输入混合的情况
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text{
NSString *lang
= [[UITextInputMode currentInputMode] primaryLanguage];
if ([text length]==0)
{
if (self.maxWords<</span>maxWordsConst)
{
self.maxWords +=1;
}
return YES;
}
else {
if ([lang isEqualToString:@"zh-Hans"]&&![text isMatchedByRegex:@"[\u4e00-\u9fa5]"]&&[textlength]==1)
{ //如果输入键盘为中文 并且输入的不为中文,长度为1(中文输入条上全英文) 就算达到上限也是可以输入的
return YES;
}
else{
if ([textView.text length]+[text length]
> maxWordsConst){
self.maxWords = 0;
textView.text = [textView.text substringToIndex:maxWordsConst];
return NO;
}
else {
self.maxWords = maxWordsConst -
([textView.text length]+[text length]);
return YES;
}
}
}
}
相关文章推荐
- iOS编程-UITextView固定长度输入文本
- 详释(常见UITextView 输入之字数限制)之一---固定长度
- UITextView 限制输入文本长度
- 详释(常见UITextView输入之字数限制)之一固定长度
- 详释(常见UITextView 输入之字数限制)之一---固定长度
- 详释(常见UITextView 输入之字数限制)之一---固定长度
- 详释(常见UITextView 输入之字数限制)之一---固定长度
- IOS--UITextView 多行文本的输入和显示 的使用方法详细
- Android控制文本输入框最多输入10个字符长度
- iOS--UITextView 多行文本的输入和显示 的使用方法详细
- iOS限制文本输入长度进阶之 二
- MRC下多行文本输入UITextView
- UITextField、UITextView--文本输入框,以及文本输入域
- UITextView限制最大输入长度(UITextField相同)
- 【游戏随机系统模拟】随机位置随机长度的固定文本
- 使用GDI+ MeasureString方法计算显示 输入文本的长度
- UITextView限制输入长度
- IOS--UITextView 多行文本的输入和显示 的使用方法详细
- 如何解决 输入字段为固定长度??
- UITextView 输入长度限制