Держите UIAlertView отображенным - PullRequest
2 голосов
/ 09 февраля 2012

У меня есть UIAlertView с textField и двумя кнопками: Сохранить и Отменить. Когда нажимается кнопка «Сохранить», я проверяю, не является ли текстовое поле пустым, а после, если это так, я просто хочу изменить местозаполнитель textFields на: @ «введите имя, пожалуйста» и сохраняйте вид предупреждения на экране. Однако это автоматически отклонено.

Как мне переопределить это?

1 Ответ

6 голосов
/ 09 февраля 2012

Добавить цель в текстовое поле в подклассе alertView.Вы можете создать подкласс alertView и не отклонять , как описано в этом посте

[[alertView textFieldAtIndex:0] addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged];

Затем напишите функцию textFieldDidChange, которая проверяет текущее текстовое поле вашего alertView и устанавливает логическое значение, чтобы вы зналиследует ли отклонить предупреждение.

- (void) textFieldDidChange
{
  NSString *alertViewText = [[alertView textFieldAtIndex:0] text];

  if ([alertViewText isEqualToString:@""]) {
    [alertView setMessage:@"Enter a name please."];
  } else {
    [alertView setMessage:@"Default Message"];
  }
}

* В качестве альтернативы, я бы предложил отключить «Сохранить», когда оно пустое и не требует подкласса.*

- (void) textFieldDidChange
{
  NSString *alertViewText = [[alertView textFieldAtIndex:0] text];

  if ([alertViewText isEqualToString:@""]) {
    [alertView setMessage:@"Enter a name please."];
    for (UIViewController *view in alertView.subview) {
       if ([view isKindOfClass:[UIButton class]]) {
          UIButton *button = (UIButton *)view;
          if ([[[button titleLabel] text] isEqualToString:@"Save"])
             [button setEnabled:NO];
       }      
    }
  } else {
    [alertView setMessage:@"Default Message"];
    for (UIViewController *view in alertView.subview) {
       if ([view isKindOfClass:[UIButton class]]) {
          UIButton *button = (UIButton *)view;
          if ([[[button titleLabel] text] isEqualToString:@"Save"])
             [button setEnabled:YES];
       }      
    }
  }
}
...