Как проверить UITextField на нулевое значение?

Я пытаюсь сделать часть своего приложения, где, если человек не изменяет пустой текст в моем UITextField, он / она не может перейти к следующему шагу. По сути, я хочу протестировать UITextField для нулевого текста. Я использовал метод if (text == @ ""), но если человек нажимает на UITextField, но не печатает, тогда оператор if не работает. По какой-то причине он не думает, что текст == nil или "". Я неправильно реализую код. Любые другие варианты. Пожалуйста помоги!!!


person Blane Townsend    schedule 15.04.2011    source источник
comment
Вы рассматриваете пробелы? Можно ли пробелы пользовательского типа? вы считаете их нулевыми или пустыми?   -  person Ravin    schedule 15.04.2011


Ответы (4)


Вы должны проверить length свойства text:

if([[textField text] length] == 0) {
  //do something...
}
person Jacob Relkin    schedule 15.04.2011

Вот категория, которую я использую ...

@implementation NSString (NSString+Extensions)            
- (BOOL)isNotBlank {
    return [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0;
}        
@end

Таким образом, строка nil будет оцениваться как false, что правильно. Создание isBlank вернет false для nil, что неверно.

person Jason Harwig    schedule 15.04.2011

Я должен написать код, чтобы проверить, пуста ли строка или нет. Этот код также проверяет наличие пространства только для строки, которое также пусто для имени и адреса магазина и т. Д., Это вам поможет.

NSString *stringTemp = textField.text;
stringTemp = [stringTemp stringByReplacingOccurrencesOfString:@" " withString:@""];

if ([stringTemp isEqualToString:@""]) {
    NSLog(@"Empty string");
}
else{
    NSLog(@"string has some content ");
}

Спасибо

person Crazy Developer    schedule 15.04.2011
comment
Это не будет соответствовать другим пробельным символам. Используйте stringByTrimmingCharactersInSet: с набором символов пробела. - person Jason Harwig; 15.04.2011

На вашем месте я бы отключил и включил кнопку, пока пользователь печатает. Имхо, лучше, чтобы кнопка выглядела отключенной, когда нет текста, чем когда пользователь нажимает кнопку, чтобы сообщить ему, что ему не разрешено переходить к следующему представлению. Большинство приложений 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 (или где угодно), а если вы предоставляете пустое поле, вы должны отключить его изначально.

person Matthias Bauch    schedule 15.04.2011