@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];
// 沒有高亮選擇的字,則對已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計和限制
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
調(diào)用
[_nameTextField.textLabel addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField {
[textField treateTextFieldToIndex:11];
}