UIScrollView перемещается ниже строки навигации и строки состояния

У меня есть представление, которое содержит scrollView. Когда представление появляется, изображение появляется в полноэкранном режиме (320x480), скрывая статус и панель навигации. Когда я касаюсь экранов - на экране появляется панель состояния и навигации. Но эта вещь смещает UIScrollView ниже панели навигации. Я хочу, чтобы панель состояния и навигации отображались поверх моего представления прокрутки.

Как это происходит в приложении для фотографий. При нажатии на изображение панель состояния и навигации отображается над прокруткой.

Ниже показано, как я позиционирую вид


//What I have done in viewDidLoad
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
self.wantsFullScreenLayout = YES;
scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = scrollView;

Ниже показано, что я делаю при обнаружении одного касания.


- (void)tapDetectingImageView:(TapDetectingImageView *)view             gotSingleTapAtPoint:(CGPoint)tapPoint {
    // single tap hide/unhide the status and nav bar
    NSLog(@"got a single tap");
    if (self.navigationController.navigationBarHidden == NO)
    {

        [self.navigationController setNavigationBarHidden:YES animated:NO];
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
        [self.navigationController setNavigationBarHidden:NO animated:NO];
    }
}

Просто указатель для вас, ребята. Если я использую

[self.view addSubview:scrollView];
, я не вижу этой проблемы. Но это испортило мой код альбомной ориентации.

Любой, кто может пролить свет на то, что я могу делать неправильно - был бы очень полезен!


person AJ.    schedule 28.07.2009    source источник


Ответы (2)


Похоже, что внутри UIScrollView происходит какая-то особая обработка при переключении панелей инструментов навигации. Как вы указали в конце своего вопроса, если вы поместите представление прокрутки внутри содержащего UIView, эта проблема с репозиционированием не возникнет.

Чтобы исправить проблемы с ландшафтом, убедитесь, что вы установили autoresizingMask как для представления контейнера, так и для представления прокрутки. Мне не пришлось добавлять какую-либо дополнительную обработку для ландшафтного режима в моем проекте.

person Steve Madsen    schedule 27.07.2010

Я сам нашел решение. В моем коде обнаружения касания else fn я добавляю строку ниже в последнюю очередь.

scrollView.contentOffset = CGPointMake(parentScrollView.contentOffset.x,0);

Не уверен, что это правильный подход. Но если кто-то может предложить лучший подход - приветствую!

person AJ.    schedule 28.07.2009