2015-04-23 5 views
2

Я использую UIAlertController и UIActivityIndicatorView в качестве индикатора загрузки, и он закрывается, пока мое приложение не получит ответ сервера. Но когда что-то не так с моим сервером или сетью, мое приложение никогда не получит ответ, я не могу вернуть свой контроль из AlertView, я хочу знать, есть ли какой-нибудь метод, который может закрыть этот AlertView, коснувшись экрана. И мой UIAlertView без названия и кнопок. Любые подсказки будут благодарны.Как я могу закрыть UIAlertController без кнопки

Он разбился, когда я прикасаюсь к экрану, Вот мой код:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil 
                 message:@"正在装载页面...\n\n" 
                 preferredStyle:UIAlertControllerStyleAlert]; 
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
spinner.center = CGPointMake(130.5, 65.6); 
spinner.color = [UIColor darkGrayColor]; 
[spinner startAnimating]; 
[alert.view addSubview:spinner]; 
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc]initWithTarget:alert action:@selector(stopWaiting)]; 
[alert.view addGestureRecognizer:recognizer]; 
+0

Как вы проводите сетевые операции? Поместите некоторый код. –

+0

вы можете сделать так: [alertViewоткрыткаWithClickedButtonIndex: 0 анимированный: ДА]; – aBilal17

ответ

14

Сохранить оповещения контроллер некоторого свойства (например, alertController) и закрыть его с

[self.alertController dismissViewControllerAnimated:YES completion:nil]; 

Для его, прикоснувшись к оповещению, добавьте признак распознавания жесткого диска к виду alertController:

- (void)showAlert { 
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" 
                      message:@"Some message" 
                     preferredStyle:UIAlertControllerStyleAlert]; 
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self 
                          action:@selector(closeAlert)]; 
    [alertController.view addGestureRecognizer:tapGestureRecognizer]; 
    self.alertController = alertController; 

    [self presentViewController:alertController animated:YES completion:nil]; 
} 

- (void)closeAlert { 
    [self.alertController dismissViewControllerAnimated:YES 
              completion:nil]; 
} 

enter image description here

+0

Он рухнул, когда я касаюсь экрана, в консоли он говорит «непризнанный селектор, отправленный экземпляру», есть ли что-то не так? – winhell

+0

Я уверен, что это не рекомендуется. В большинстве случаев предлагается, чтобы у вас была какая-то кнопка, говоря «ОК» или «Отмена» или что-то в этом роде. – erdekhayser

+0

Спасибо! Очень ценится и полезно. – Felipe

Смежные вопросы