Как проверить UITextField на ноль? - PullRequest
2 голосов
/ 15 апреля 2011

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

Ответы [ 4 ]

12 голосов
/ 15 апреля 2011

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

if([[textField text] length] == 0) {
  //do something...
}
2 голосов
/ 15 апреля 2011

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

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

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

1 голос
/ 15 апреля 2011

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

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

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

Спасибо

0 голосов
/ 15 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...