Keep UIAlertView displayed

后端 未结 1 1159
执笔经年
执笔经年 2021-01-15 15:11

I have a UIAlertView with a textField on it and two buttons: Save & Cancel. When the Save button is tapped I am checking if the text field isn\'t empty and after if it i

相关标签:
1条回答
  • 2021-01-15 15:31

    Add a target to the textfield in a subclassed alertView. You can subclass the alertView and not dismiss as described in this post

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

    Then write a function called textFieldDidChange that checks the current textfield of your alertView and set a boolean value so you know whether or not to dismiss the alert.

    - (void) textFieldDidChange
    {
      NSString *alertViewText = [[alertView textFieldAtIndex:0] text];
    
      if ([alertViewText isEqualToString:@""]) {
        [alertView setMessage:@"Enter a name please."];
      } else {
        [alertView setMessage:@"Default Message"];
      }
    }
    

    * Alternatively, I would suggest disabling "Save" when it is empty and not have to subclass. *

    - (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];
           }      
        }
      }
    }
    
    0 讨论(0)
提交回复
热议问题