Панель инструментов исчезает при загрузке страницы вверх ногами - PullRequest
0 голосов
/ 06 декабря 2011

Так что это почти наверняка будет простой ответ, но я не могу на всю жизнь решить это!

По сути, я хочу, чтобы мое текущее приложение можно было просматривать только в портретном режиме (по крайней мере, на данный момент) и либо в правильном направлении вверх, либо вверх ногами. Все отлично работает в правильном направлении, и когда вы поворачиваете iPad на странице, все работает нормально, страница переворачивается как обычно. Но если вы держите iPad вверх ногами (кнопка «Домой» вверху) и нажимаете кнопку, чтобы загрузить новую страницу, при загрузке страницы панель инструментов не видна! Я не знаю, находится ли по какой-то причине панель инструментов позади остального контента или ее там нет. Если затем повернуть iPad обратно в портретное положение, появится панель инструментов, и все снова вернется в нормальное состояние!

Что страннее в том, что на iPhone панель инструментов есть, когда вы загружаете страницу с перевернутым iPhone !!

Я пробовал все виды с помощью методов shouldAutorotateToInterfaceOrientation () и didRotateFromInterfaceOrientation () и с изменением размера / позиционирования на viewDidLoad в зависимости от ориентации. Но, похоже, ничего не работает вообще!

Это код, который я использую в методе viewDidLoad ():

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    NSLog(@"iPhone");
    if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait)
    {
        self.view.frame = CGRectMake(0, 0, 320, 460);
    }
    else if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.view.frame = CGRectMake(0, 20, 320, 460);
    }
}
else
{
    NSLog(@"iPad");
    if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait)
    {
        self.view.frame = CGRectMake(0, 0, 768, 1024);
        NSLog(@"iPad Portrait Up");
    }
    else if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.view.frame = CGRectMake(0, 20, 768, 1024);
        NSLog(@"iPad Portrait Upside Down");
    }
}

Я пробовал похожие вещи в методе didRotateFromInterfaceOrientation (), но ничего не работает!

Заранее благодарим за любую помощь и не стесняйтесь задавать вопросы / просить больше кода

Мэтт

1 Ответ

0 голосов
/ 06 декабря 2011

Я столкнулся с подобной проблемой, и вот что я обнаружил. Когда вы добавляете панель инструментов вверху xib-файла iPad UIView, по умолчанию устанавливается ее автоматический размер, как показано на рисунке ниже. Панель инструментов всегда будет придерживаться нижней части вместо верхней.

enter image description here

Что я сделал, так это поменял его на верх, как показано на рисунке ниже, и это решило мою проблему.

enter image description here

Если вы настраиваете панель инструментов программно, вам необходимо обновить autoresizingMask.

...