2013-03-23 4 views
0

Я хочу установить максимальную длину до UITexField, но это вставлено в UIAlertView, . Я пытаюсь найти правильную информацию для решения этой проблемы на этом красивом сайте, но ничего нет.Установите максимальную длину UITextField в UIAlertView

Может ли кто-нибудь помочь мне в этом?

+0

Возможные дубликат: HTTP: //stackoverflow.com/questions/ 7670018/problem-a-maximum-length-for-a-text-field –

ответ

0

Как вы можете получить доступ к TextField в alertView путем

UITextField *theTitleTextField = [alertView valueForKey:@"_bodyTextLabel"]; 

Если вы хотите, чтобы найти добавил ваше: текстовое поле, а затем использовать textFieldAtIndex: как предложено Martin R.

Затем выполните протокол UITextFieldDelegate.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([textField.text length] > MAXLENGTH) { 
     textField.text = [textField.text substringToIndex:MAXLENGTH-1]; 
     return NO; 
    } 
    return YES; 
} 
+0

Я предполагаю, что OP означало (необязательное) * текстовое поле ввода * UIAlertView. Вы можете получить доступ к этому методу с помощью метода textFieldAtIndex:. –

+0

мои 20 минут потрачены впустую, чтобы найти по умолчанию. Этот вопрос был настолько прямым, или это волшебство РЕДАКТОРОВ? –

+0

Нет, исправлено исправление только опечаток. (Я только что заметил, что вы удалили «Я не интересуюсь iOS» со страницы вашего профиля :-) –

2

Я думаю, что это лучше, реализация методы UITextFieldDelegate, так как это не приведет к удалению текста конца перед глазами пользователей, он просто не позволяет пользователю вводить более текст.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    if (newString.length > MAXLENGTH) 
    { 
     return NO; 
    } 

    return YES; 
} 

Не забудьте реализовать протокол UITextFieldDelegate и установить контроллер в качестве делегата от текстового поля (см Anoop Вайдья ответ)

+0

Спасибо, что ваше решение идеально подходит для меня. – Moy

Смежные вопросы