iOS中UITextField的字符長(zhǎng)度限制

????? 項(xiàng)目中遇到這么一個(gè)問(wèn)題,需要對(duì)用戶昵稱長(zhǎng)度做限制,起初沒(méi)想太多,那就直接在UITextFieldDelegate的一個(gè)協(xié)議中做就OK啊,協(xié)議如下:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text

我自己在模擬器上是可以的,后來(lái)測(cè)試給我報(bào)個(gè)bug,說(shuō)不行,我仔細(xì)看其操作,他用了聯(lián)想輸入,還用了第三方輸入法。。。確實(shí)不行,好吧,看來(lái)這個(gè)協(xié)議是不行的,就想著監(jiān)聽(tīng)唄,監(jiān)聽(tīng)這個(gè)UITextField,代碼如下:

首先在ViewDidLoad方法中注冊(cè)通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.textField];

然后實(shí)現(xiàn)selector方法

- (void)textFieldEditChanged:(NSNotification *)obj {

? ? ? 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 > MaxTextFieldTextLength) {

? ? ? ? ? ? UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:@"昵稱長(zhǎng)度不能超過(guò)30個(gè)字符" preferredStyle:(UIAlertControllerStyleAlert)];

? ? ? ? ? ? UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {

? ? ? ? ? ? }];

? ? ? ? ? ? [alertVC addAction:action];

? ? ? ? ? ? [self presentViewController:alertVC animated:YES completion:nil];

? ? ? ? ? ? NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MaxTextFieldTextLength];

? ? ? ? ? ? if (rangeIndex.length == 1) {

? ? ? ? ? ? ? ? textField.text = [toBeString substringToIndex:MaxTextFieldTextLength];

? ? ? ? ? ? }else {

? ? ? ? ? ? ? ? NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MaxTextFieldTextLength)];

? ? ? ? ? ? ? ? textField.text = [toBeString substringWithRange:rangeRange];

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容