UITextField限制輸入長度

首先,漢字的輸入時的聯想詞在輸入到TextFiled時,並不會走css

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;spa

這致使了在這裏進行長度限制的代碼都會失效.此路不通.code

 

所以咱們能夠用註冊UITextFieldTextDidChangeNotification通知來監測TextField的文字的變化:server

一、註冊通知blog

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
          name:@"UITextFieldTextDidChangeNotification" object:myTextField];

 

二、實現 textFiledEditChanged: 方法string

- (void) textFiledEditChanged:(NSNotification *)notification{
     
    UITextField *textField = (UITextField *)obj.object;
    NSString *toBeString = textField.text;
 
    //獲取高亮部分
    UITextRange *selectedRange = [textField markedTextRange];
    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
 
    // 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
    if (!position || !selectedRange) {
        if (toBeString.length > MAX_STARWORDS_LENGTH) {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
            if (rangeIndex.length == 1) {
                textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
            } else {
                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
                textField.text = [toBeString substringWithRange:rangeRange];
            }
        }
    }
}

至此,能夠完美控制輸入字符長度it

相關文章
相關標籤/搜索