iOS開發 正確限制UITextField(UITextView)輸入位數

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];
                }
            }
            
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章