Как я могу уведомить об изменениях в UITextField? - PullRequest
3 голосов
/ 19 апреля 2011

У меня есть два текстовых поля (одно для имени пользователя и другое для пароля), и у меня есть одна кнопка (для входа в систему).Оба текстовых поля имеют clearButtonMode как YES (то есть я предоставляю маленькую крестообразную кнопку x в правом конце текстового поля, чтобы стереть поле одним щелчком мыши).

Первоначально кнопка входа отключена.Я хочу включить его, если & только если оба текстовых поля должны иметь хотя бы одну букву.Также должно работать при нажатии на крестик.

Пожалуйста, предложите мне, как это сделать ....

Заранее спасибо

1 Ответ

10 голосов
/ 19 апреля 2011

Вы можете использовать уведомление UITextFieldTextDidChangeNotification для обоих полей и соответственно включить его для своей кнопки.

Пример кода:

// add the observer
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(textFieldDidChange:) 
                                             name:@"UITextFieldTextDidChangeNotification" 
                                          object:nil];

// the method to call on a change
- (void)textFieldDidChange:(NSNotification*)aNotification 
{
    myButton.enabled = [self bothTextFieldsHaveContent];
}

- (BOOL)bothTextFieldsHaveContent
{   
    return ![self isStringEmptyWithString:textField1.text) && 
           ![self isStringEmptyWithString:textField2.text);
}

// a category would be more elegant
- (BOOL)isStringEmptyWithString:(NSString *)aString
{
    NSString * temp = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    return [temp isEqual:@""];
}
...