Я пытаюсь сделать часть своего приложения, где, если человек не изменяет пустой текст в моем UITextField, он / она не может перейти к следующему шагу. По сути, я хочу протестировать UITextField для нулевого текста. Я использовал метод if (text == @ ""), но если человек нажимает на UITextField, но не печатает, тогда оператор if не работает. По какой-то причине он не думает, что текст == nil или "". Я неправильно реализую код. Любые другие варианты. Пожалуйста помоги!!!
Как проверить UITextField на нулевое значение?
Ответы (4)
Вы должны проверить length
свойства text
:
if([[textField text] length] == 0) {
//do something...
}
Вот категория, которую я использую ...
@implementation NSString (NSString+Extensions)
- (BOOL)isNotBlank {
return [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0;
}
@end
Таким образом, строка nil будет оцениваться как false, что правильно. Создание isBlank
вернет false для nil, что неверно.
Я должен написать код, чтобы проверить, пуста ли строка или нет. Этот код также проверяет наличие пространства только для строки, которое также пусто для имени и адреса магазина и т. Д., Это вам поможет.
NSString *stringTemp = textField.text;
stringTemp = [stringTemp stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([stringTemp isEqualToString:@""]) {
NSLog(@"Empty string");
}
else{
NSLog(@"string has some content ");
}
Спасибо
На вашем месте я бы отключил и включил кнопку, пока пользователь печатает. Имхо, лучше, чтобы кнопка выглядела отключенной, когда нет текста, чем когда пользователь нажимает кнопку, чтобы сообщить ему, что ему не разрешено переходить к следующему представлению. Большинство приложений Apple делают это так.
Этого можно добиться с помощью метод UITextFieldDelegate как это
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// "Length of existing text" - "Length of replaced text" + "Length of replacement text"
NSInteger textLength = [aTextView.text length] - range.length + [text length];
if (textLength > 0) {
doneButton.enabled = YES;
}
else {
doneButton.enabled = NO;
}
return YES;
}
Если вы предоставляете предварительно заполненное текстовое поле, вы должны включить кнопку в viewDidLoad (или где угодно), а если вы предоставляете пустое поле, вы должны отключить его изначально.