У меня есть экран Client Details
со многими UITextField
. Мне нужно ограничить postcodeField
максимум 7 символами и автоматически конвертировать в верхний регистр. У меня уже есть код, чтобы преобразовать текст в верхний регистр, но, кажется, я не могу что-нибудь еще с этим конкретным UITextField
делать в Delegate
методеУстановить максимальную длину UITextField и преобразовать в верхний регистр?
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
Вот что я пробовал:
#define MAXLENGTH 7
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.postcodeField) {
self.postcodeField.text = [textField.text stringByReplacingCharactersInRange:range withString:[string uppercaseString]];
return NO;
}
if (self.postcodeField.text.length >= MAXLENGTH && range.length == 0)
{
return NO;
}
return YES;
}
А:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.postcodeField) {
self.postcodeField.text = [textField.text stringByReplacingCharactersInRange:range withString:[string uppercaseString]];
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 7) ? NO : YES;
}
Этот код не работает. Я знаю, что существует множество потоков с различными решениями для установки максимальной длины, но я не могу найти решение, которое также поддерживает преобразование в верхнем регистре. Я совершенно новичок в iOS, поэтому прошу прощения, если это рассматривается как дубликат. Любая помощь высоко ценится!
Я пробовал это, и он работает, но ограничивает все текстовые поля до 7 символов. Я не знаю, как реализовать его в моем методе вместе с кодом, который у меня уже есть (для преобразования текста в верхний регистр). Не могли бы вы рассказать о том, как это реализовано? Благодарю. – rosshump
Не нужно добавлять его нигде. Просто добавьте делегата в свой TextField. Он будет вызываться автоматически. Пожалуйста, примите ответ, чтобы зрители, которые застряли в одной и той же проблеме, были легкими. –
Извините, но я не совсем понимаю вас. Я добавил делегата в текстовое поле, и он автоматически вызван, но мне также нужен код для его преобразования в верхний регистр. Добавляя свой код к методу, символы больше не преобразуются в верхний регистр. Извините, если мне не хватает простого решения! – rosshump