闻道技能(iOS-设计模式)iOS Developer

UITextField 限制字数的正确姿势

2017-06-02  本文已影响78人  iLees
@interface UITextField (LimitTextLength)

/**
 *  截断至某个长度
 *  
 *  @param index :长度
 *  @return 返回是否成功截断
 */
- (BOOL)treateTextFieldToIndex:(int)index;

@end

@implementation UITextField (LimitTextLength)

- (BOOL)treateTextFieldToIndex:(int)index {
    NSString *toBeString = self.text;
    
    //获取高亮部分
    UITextRange *selectedRange = [self markedTextRange];
    UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
    
    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
    if (!position || !selectedRange) {
        if (toBeString.length > index) {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:index];
            if (rangeIndex.length == 1) {
                self.text = [toBeString substringToIndex:index];
            } else {
                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, index)];
                self.text = [toBeString substringWithRange:rangeRange];
            }
            return YES;
        }
    }
    return NO;
}

@end

调用

 [_nameTextField.textLabel addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

- (void)textFieldDidChange:(UITextField *)textField {
     [textField treateTextFieldToIndex:11];
}
上一篇下一篇

猜你喜欢

热点阅读