2013-09-04 3 views
2

У меня есть экземпляр UITextField с secureTextEntry = YES. Когда поле сначала получает фокус, любое нажатие клавиши очистит поле, как представляется, стандартное поведение в iOS.Является ли событие инициированным, когда UITextField с secureTextEntry = YES очищается?

Насколько я могу судить, UIControlEventEditingChanged не срабатывает. Я также попытался подписаться на UIControlEventAllEditingEvents, но, похоже, он не срабатывает. Это вызывает проблему для меня, поскольку я полагаюсь на знание, когда поле редактируется, чтобы установить атрибут enabled UIButton.

Есть ли событие, которое вызывается, когда поле очищается таким образом?

Их контекст вокруг моей проблемы можно увидеть в этом GitHub issue.

+1

Это работает для меня. У меня есть текстовое поле. Если я сделаю его безопасным, и я добавлю действие для события 'UIControlEventEditingChanged', мое действие вызывается, когда я нажимаю клавишу, и текстовое поле очищается. – rmaddy

+0

Подтверждено, что это работает с iOS 6.1; проблема связана с версией iOS, на которую я нацелен. –

+0

Пожалуйста, отправьте это как ответ. –

ответ

1

Вы можете использовать делегат в UITextField в:

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:text]; 
    [self performSelector:@selector(updateButton) withObject:nil afterDelay:0.1]; 
    return YES; 
} 

- (BOOL)textFieldShouldClear:(UITextField *)textField { 
    [self performSelector:@selector(updateButton) withObject:nil afterDelay:0.1]; 
    return YES; 
} 

- (void) updateButton { 
    someButton.enabled = NO; 
} 
0

Если добавить действие для UIControlEventAllEvents, метод не дозвонились, когда текстовое поле очищается таким образом, что подтверждает, что ни одно событие не срабатывает.

+0

Это получало флаги для чтения как комментарий больше, чем ответ. Я восстановил его, но посмотрю, можете ли вы прояснить его за простым замечанием «которое подтверждает, что никакое событие не срабатывает», которое можно легко упустить. – BoltClock

0

привет вы можете использовать следующий метод:

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
     [self performSelector:@selector(MakeButtonEnabled:) withObject:nil afterDelay:0.2]; 
     return YES; 
    } 

- (void) MakeButtonEnabled:(id)sender { 
    UIButton *yourButton=(UIBUtton*) sender; 
    yourBUtton.enabled = NO; 
} 

надеюсь, что это поможет.