iOS開發時,有時候我們需要對輸入框的位數做出合理的限制。對於UITextField,可通過監聽UIControlEventEditingChanged 做出合理的位數限制;UITextView則要實現其代理 -textViewDidChange:對其位數進行限制,此處就不再贅述。
//檢測輸入變化
[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField {
if (textField == self.textField) {
//對UITextField字數限制,比如5個字。
static NSUInteger maxLength = 5;
NSString *inputText = textField.text;
//獲取高亮部分
UITextRange *markedTextRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:markedTextRange.start offset:0];
//沒用高亮選擇的字,則對已輸入的文字進行字數統計和限制
if (!position || !markedTextRange) {
if (inputText.length > maxLength) {
NSRange rangeIndex = [inputText rangeOfComposedCharacterSequenceAtIndex:maxLength];
if (rangeIndex.length == 1) {
textField.text = [inputText substringToIndex:maxLength];
} else {
NSRange range = [inputText rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];
textField.text = [inputText substringWithRange:range];
}
}
}
}
}