Я использую следующий код в моем делегате UITextField
для ограничения количества символов, которые можно ввести:
К вашему сведению: Розетка UITextField
называется nameChoiceField
.Плюс есть розетка с надписью errorMessageLabel
.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *potentialNewChosenName = [self.nameChoiceField.text stringByReplacingCharactersInRange:range withString:string];
NSCharacterSet *nonLettersNumbersOrDashes = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890- "] invertedSet];
if ([potentialNewChosenName stringByTrimmingCharactersInSet:nonLettersNumbersOrDashes].length != potentialNewChosenName.length) {
self.errorMessageLabel.text = @"Only letters, numbers etc allowed.";
return NO;
} else {
self.errorMessageLabel.text = @"That's okay.";
return YES;
}
}
, которая работает хорошо (пока автозамена выключена и если вы добавляете какие-либо другие вещи, чтобы остановить автоматическую полную остановку после ввода 2 пробелов).
Однако!Когда вы нажимаете return
на клавиатуре, это не разрешается (отображается сообщение об ошибке «Только буквы ....»).
Как вы ограничиваете ввод, который может сделать пользователь, и при этом все еще должны распознавать кнопку return
?
Кроме того, есть ли рекомендации по распознаванию кнопки delete
, которые должны быть реализованы выше?