2015-08-25 2 views
0

Я пытаюсь что-то сделать, когда нажата кнопка «Домой» и кнопка питания. Я развиваюсь в iOS.Почему вид * Исчезающие методы не вызываются в iOS?

Это код я использую:

- (void)viewDidDisappear:(BOOL)animated{ 
    [super viewDidDisappear:animated]; 
    NSLog(@"viewDidDisappear"); 
} 

- (void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    NSLog(@"viewWillDisappear"); 
} 

- (void)applicationFinishedRestoringState{ 
    NSLog(@"applicationFinishedRestoringState"); 
} 

Почему данная функция не вызывается при нажатии на кнопку питания или кнопку домой на iPhone?

Я что-то пропустил?

ответ

1

viewDidDisappear: и viewWillDisappear: будет вызван, если вид будет нажат или выскочил или в любом случае исчезнет в вашей собственной runloop, идя на задний план, нажав кнопку «домой» или «питание», не считается событием, связанным с просмотром, Мероприятия. вы должны зарегистрироваться вместо UIApplicationWillResignActiveNotification.

например.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disappearSelector) name:UIApplicationWillResignActiveNotification object:nil]; 
1

Согласно документации Apple,

Этот метод вызывается, прежде чем вид приемника собирается добавить в иерархии представлений и до того, как анимации настроены на показывая вид. Вы можете переопределить этот метод для выполнения пользовательских задач , связанных с отображением вида. Например, вы можете использовать этот метод для изменения ориентации или стиля строки состояния на координаты с ориентацией или стилем представленного представления. Если вы переопределите этот метод, вы должны вызвать супер в какой-то момент в вашей реализации .

Чтобы получить уведомление, когда приложение возобновит следует использовать: - (void)applicationDidBecomeActive:(UIApplication *)application Этот метод реализован в вашем AppDelegate.m

С другой стороны

Уведомление называется UIApplicationDidEnterBackgroundNotification размещена, когда пользователь блокирует их телефон. Вот как слушать для него:

В viewDidLoad: ваша ViewController:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenLocked) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

Затем добавить некоторые вещи в вашем методе

-(void)screenLocked{ 
    //do stuff 
} 
+0

'UIApplicationDidEnterBackgroundNotification' будет вызван, когда операционная система решила, что приложение должно на самом деле перейдите в фоновый режим, он может вообще не вызваться, если пользователь вернется к приложению в ближайшее время, с другой стороны, 'UIApplicationWillResignActiveNotification' будет вызван, когда приложение уйдет в отставку, являясь передним приложением, и оно всегда будет вызвано в Home или power нажмите кнопку. –

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