码迷,mamicode.com
首页 > 移动开发 > 详细

iOS限制文本输入长度进阶之 二

时间:2014-12-22 12:46:06      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

想在最后还能输入中文?

当然得找到,输入了拼音还没选择汉字的标记啦!

什么?你疑惑会没有标记? 

的确我也有过这样的疑惑,因为找遍了UITextField,完全是没有头绪的

UITextField里没有,肯定就要找和它关联的啦

好了,不和你绕圈子了,直接揭晓

UITextField的UITextInput协议中有这么一个属性markedTextRange

  @property (nonatomic, readonly) UITextRange *markedTextRange;                       //如果没有高亮文本则为nil  

  上篇文章最终代码为3. 这里以此为基础进行优化,这里重复一次

3.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (range.location >= 10){
        return NO;
    }
    return YES;
}

 目标:最后一个位置输入汉字可以突破限制

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (range.location >= 10 && (textField.markedTextRange == nil)){
        return NO;
    }
    return YES;
}

  的确可以超过限制了,可是却没发删除了,别着急,有办法,在添加一个判断逻辑

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (range.location >= 10 && (textField.markedTextRange == nil && range.length == 0)){
        return NO;
    }
    return YES;
}
.length == 0,表示输入更多, .length == 1则表示删除

 这样一来,问题又来了,当选择汉字时,字数可能就已经超过了最大字数,因此还需要增加一些逻辑

 

#define MAXNumber  10
 [self.field addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField{
    if (textField.markedTextRange == nil) {
        if (textField.text.length > MAXNumber) {
            textField.text = [textField.text substringToIndex:MAXNumber];
        }
    }
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (range.location >= MAXNumber && (textField.markedTextRange == nil && range.length == 0)){
        return NO;
    }
    return YES;
}

自此,已经算是可以解决中文输入限制的问题了,说了这么多就最后这些才是最终的 ^_^ 更多的就需要自己解决了

 

iOS限制文本输入长度进阶之 二

标签:

原文地址:http://www.cnblogs.com/binglin92/p/4174589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!