iOS限制文本輸入長度進階之 二

來源:互聯網
上載者:User

標籤:

想在最後還能輸入中文?

當然得找到,輸入了拼音還沒選擇漢字的標記啦!

什嗎?你疑惑會沒有標記? 

的確我也有過這樣的疑惑,因為找遍了UITextField,完全是沒有頭緒的

UITextField裡沒有,肯定就要找和它關聯的啦

好了,不和你繞圈子了,直接揭曉

UITextField的UITextInput協議中有這麼一個屬性markedTextRange

  @property (nonatomic, readonly) UITextRange *markedTextRange;                       //如果沒有高亮文本則為nil  

  上篇文章最終代碼為3. 這裡以此為基礎進行最佳化,這裡重複一次

3.- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (range.location >= 10){        return NO;    }    return YES;}

 目標:最後一個位置輸入漢字可以突破限制

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (range.location >= 10 && (textField.markedTextRange == nil)){        return NO;    }    return YES;}

  的確可以超過限制了,可是卻沒發刪除了,別著急,有辦法,在添加一個判斷邏輯

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (range.location >= 10 && (textField.markedTextRange == nil && range.length == 0)){        return NO;    }    return YES;}
.length == 0,表示輸入更多, .length == 1則表示刪除

 這樣一來,問題又來了,當選擇漢字時,字數可能就已經超過了最大字數,因此還需要增加一些邏輯

 

#define MAXNumber  10
 [self.field addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField{    if (textField.markedTextRange == nil) {        if (textField.text.length > MAXNumber) {            textField.text = [textField.text substringToIndex:MAXNumber];        }    }}- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (range.location >= MAXNumber && (textField.markedTextRange == nil && range.length == 0)){        return NO;    }    return YES;}

自此,已經算是可以解決中文輸入限制的問題了,說了這麼多就最後這些才是最終的 ^_^ 更多的就需要自己解決了

 

iOS限制文本輸入長度進階之 二

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.