закрыть UIActionSheet, когда приложение выходит в фоновом режиме на iOS4 - PullRequest
3 голосов
/ 14 августа 2010

В приложении, над которым я работаю, у меня есть листы действий и представления предупреждений, которые я хотел бы отклонить, когда приложение переходит в неактивное / фоновое состояние.

Я использую UIApplicationWillResignActiveNotification вместо UIApplicationDidEnterBackgroundNotification, поскольку я хочу, чтобы код был совместим с iOS3.2.

-(void)applicationWillResignActive:(Notification *)notification{
    if (self.actionSheet && self.actionSheet.visible){
        NSLog(@" actionSheet is Visible");
        [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];
    }
}

Тестируя это в симуляторе (iphone 3.2, iOS4), с видимым actionSheet, я нажимаю кнопку home, но не получаю сообщение «actionSheet is Visible».Тем не менее, когда я снова открываю приложение и снова закрываю его с помощью кнопки home, я получаю сообщение «actionSheet is Visible».

Это говорит о том, что в первый раз свойство visibleSheet не устанавливается.Может ли быть задержка в установке свойства?На самом деле я помещаю сообщение в метод, который отображает actionSheet

[self.actionSheet showInView:self.parentViewController.tabBarController.view];
if (self.actionSheet.Visible) NsLog(@" action Sheet visible");

, даже здесь я не получаю сообщение.Где и когда устанавливается видимое свойство?Я делаю что-то в корне неправильно, пытаясь отклонить список действий?Я видел подобные очень хорошие и подробные решения по закрытию alertViews в SO .... но они, похоже, не охватывают эту проблему.Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 14 августа 2010

Зачем вам вообще нужно проверять, виден ли он?На самом деле, зачем вам даже проверять это на ноль?Вы можете просто поставить [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];, и он должен работать нормально, как будто лист действий существует, вы его отклоните, а если нет, просто вызовите метод для nil, который ничего не делает.

...