(мобильный) Как скрыть панель навигации во время прокрутки

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

setTimeout(function () {
  window.scrollTo(0, 1);
}, 500);

Однако, чтобы скрыть панель навигации изначально и при изменении ориентации, я хочу, чтобы панель навигации оставалась скрытой во время прокрутки. Я бы хотел, чтобы это работало там, где единственный способ увидеть панель навигации — это, во всяком случае, на iphone, где они касаются верхней части экрана. Очевидно, что он уже хорошо спрятан при прокрутке страницы вниз, но когда вы прокручиваете страницу вверх, он отображает панель навигации, и мне бы очень хотелось, чтобы она была скрыта.

Я думал что-то вроде запуска этого на сенсорном конце

if (window.scrollY < 2) {
    setTimeout(function () {
        window.scrollTo(0, 1);
        }, 0);
    }

но проблема в том, что когда вы прокручиваете вверх, временно отображается панель навигации, а затем переходит к (0,1). Я хочу, чтобы он вообще не показывал панель навигации.

хотя я не могу заставить его работать. Спасибо!


person heckascript    schedule 27.02.2013    source источник
comment
Если рассмотреть просто перемещение всего сайта вниз на несколько сотен пикселей и настройку его таким образом, чтобы при прокрутке Y ‹ 300 он прокручивался до 300. Таким образом, между панелью навигации и видимым сайтом было бы много места... хотя я надеясь, что у кого-то есть лучшее решение.   -  person heckascript    schedule 27.02.2013


Ответы (3)


Решение, которое приходит на ум, - поместить прослушиватель событий в прокрутку, например.

window.addEventListener('scroll', function() {
  if (window.scrollTop < 44) {
    window.scrollTop = 44;
  }
});

К сожалению, размещение слушателей на прокрутке крайне неэффективно и, как правило, не одобряется. Если вам абсолютно на 100% нужна эта функциональность, используйте прослушиватель с дросселированием, чтобы ваша функция не срабатывала чаще, чем, скажем, каждые 10 мс.

person bcherny    schedule 27.02.2013
comment
Я не думаю, что мог бы позволить себе сделать это медленнее, уже есть много изображений и много кода, я думаю, что мне просто придется с этим справиться. Я бы проголосовал за ваш ответ, но у меня нет 15 очков репутации... - person heckascript; 27.02.2013
comment
Нет проблем, рад помочь! (Вроде, как бы, что-то вроде..) - person bcherny; 01.03.2013

У меня есть идея, я думаю, я просто сдвину весь сайт вниз по оси Y на 2000 пикселей, а затем найду изображение этого фонового серого колючего узора, который появляется на iphone, когда вы прокручиваете слишком далеко, и поместите его выше на оси Y, чтобы казалось, что если вы прокрутите вверх, это слишком далеко.

person heckascript    schedule 27.02.2013

Вы должны реализовать делегата scrollview

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
person Sudhir Kumar    schedule 27.02.2013
comment
Я не понимаю, что это такое и что оно делает, не могли бы вы немного объяснить? - person heckascript; 27.02.2013
comment
Он говорит совсем о другом. Программирование на Objective-C с устройствами iOS. - person Hunter Mitchell; 27.07.2013