Как я могу использовать UIApplicationDelegate во всей программе? - PullRequest
1 голос
/ 06 августа 2010

Я хочу знать, когда строка состояния меняет высоту в результате, например, телефонного звонка в процессе. Поэтому я добавил в свой UIApplicationDelegate следующее:

-(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame {
    NSLog(@"yup, got here");
}

и действительно, когда я переключаю строку состояния входящего вызова на симуляторе с любого экрана в приложении, сообщение появляется в консоли, но я хочу переместить поле uitext или 2 в другой класс, поскольку -Высота строки состояния портит один экран в частности. Мне не повезло с автоматическим изменением размера на этом экране.

Итак, мой вопрос: как мне реализовать код для одного экрана и одного экрана только из этого метода в AppDelegate? Он срабатывает на всех экранах, но мне нужно только на одном. В идеале я бы хотел, чтобы метод только в одном классе срабатывал.

Ответы [ 2 ]

7 голосов
/ 06 августа 2010

Система также отправит UIApplicationWillChangeStatusBarFrameNotification в то же время.Пусть ваш контроллер просмотра прослушивает это уведомление.Нет необходимости связываться с делегатом приложения.

1 голос
/ 07 августа 2010

Пойдите с ответом Оле, но для дальнейшего использования, как вы получите своего делегата:

MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
...