Вопрос по javascript, objective-c, ios – Отключить эффект вертикального отскока в веб-приложении для iPad

4

Есть ли способ отключить эффект отказов в прокрутке div?

До сих пор я пробовал эти вещи, но никто не работал. Пожалуйста помоги!

Как отключить вертикальный отскок / прокрутку на iPhone в мобильном веб-приложении

Невозможно отключить отказов с помощью UIScrollView и pagingEnabled = YES

Ipad Safari: отключить прокрутку и эффект отказов?

Отключить вертикальные отскоки UITableView при прокрутке

А также

http://www.iphonedevsdk.com/forum/iphone-sdk-development/996-turn-off-scrolling-bounces-uiwebview.html

Спасибо!

Это один из подходов, которые я использовал - document.ontouchmove = function (event) {event.preventDefault (); } var myDiv = document.getElementById ("scrollableDiv"); myDiv.ontouchmove = function (event) {event.stopPropagation (); } imhere
Никаких ошибок не было. imhere
Хорошо. В некоторых из ваших ссылок упоминается UIScrollView или UITableView, поэтому они не помогут вам, если вы создаете HTML-страницу. Можете ли вы опубликовать свою реализацию одного из методов JavaScript, которые вы использовали? woz
Есть ли какие-либо ошибки в консоли ошибок для какого-либо из решений? woz
Я завернул это веб-приложение в XCode с помощью PhoneGap. Также попробовал myScrollView.bounces = NO; And [(UIScrollView *) [webview.subviews objectAtIndex: 0] setAllowsRubberBanding: NO]; Здесь мне нужно div, чтобы прокрутить, но не отказов. Не уверен, если это возможно. imhere

Ваш Ответ

5   ответов
6

Cordova.plist файл и установить ключ UIWebViewBounce в NO.

Спасибо за ваш вклад, но я уже нашел решение. imhere
К счастью, этот парень нашел лучшее решение, спасибо! Likwid_T
3

Откройте свой проект phoneGapconfig.xml file и измените UIWebViewBounce со значения по умолчанию true на false:

    <preference name="UIWebViewBounce" value="false" />

Не представляю, почему по умолчанию это правда ...

Я считаю, что если у вас установлена более поздняя версия phonegap / cordova, то новое предпочтение будет <preference name = "DisallowOverscroll" value = "true" /> По крайней мере это то, что у меня работало с cordova 2.7.0 russter
Последний комментарий russter отлично работает для меня в кордове 3.3 Моя жизнь была спасена. Спасибо JSG33kC0d3
1

используемый вами код - это отключение прокрутки. Если вы хотите прокрутить, но без эффекта отскока, попробуйте что-то вроде этого:

var xStart, yStart = 0;

document.getElementById("scrollableDiv").addEventListener('touchstart',function(e) {
    xStart = e.touches[0].screenX;
    yStart = e.touches[0].screenY;
});

document.getElementById("scrollableDiv").addEventListener('touchmove',function(e) {
    var xMovement = Math.abs(e.touches[0].screenX - xStart);
    var yMovement = Math.abs(e.touches[0].screenY - yStart);
    if((yMovement * 3) > xMovement) {
        e.preventDefault();
    }
});

Я нашел это решениеВо. Дайте мне знать, если это работает для вас.

Спасибо, но это отключает как подпрыгивание, так и прокрутку. imhere
Я только что отредактировал код. Я должен был использоватьdocument.getElementById("scrollableDiv").addEventListener(... вместо тогоdocument.addEventListener(... в обоих местах. Возможно, поэтому это не сработало. woz
Все еще не работал. imhere
1

который вы хотите прокручивать.

Что происходит, если все сенсорные движения отключены по умолчанию. Если элемент, который вы хотите прокрутить, имеет класс .scroll, тогда он устанавливает для гейта значение true, чтобы позволить ему пройти.

При касании вы сбрасываете ворота на ложь.

Это работает на IOS5 и 6 и может работать в Chrome и Safari

Посмотрите @ этот пост, чтобы расширить его
Как предотвратить прокрутку страницы при прокрутке элемента DIV?

Единственный улов в том, что если вы прокручиваете прокручиваемый элемент, эффект упругости позволяет прокрутить прокрутку вверх по дереву, пока прокрутка установлена в значение true. Ручная установка положения прокрутки отменяется эффектом страшного отскока.
Бьюсь об заклад, у тех Apple-фриггеров есть встроенная реализация прокрутки, запускаемая в установленное время с каждым жестким подключением.

Так что, если вы прокрутите до -20, я думаю, что каждый шаг в петле будет жестким, не проверяя, где он был. Последовательная прокрутка до -20 -19 -18 и т. Д.

Мы должны придумать способ обойти это! (на самом деле, набрав его, у меня есть идея!)

$(function(){
  var scroll = false
  var scroll_element;
  $('body').on('touchmove',function(e){
      if(!scroll){
      e.preventDefault()
      }
  })
  $('body').on('touchend',function(e){
      scroll = false
  })  
  $('.scroll').on('touchstart',function(e){
      scroll_element = this
      scroll = true
  })  
})
0

Вот что я сделал -

#scrollableDiv {
    position:fixed;
    top:50px;
    width:300px;
    height:500px;
    word-wrap: break-word;
    overflow-y: scroll; 
}

document.getElementById("scrollableDiv").innerHTML = longText;
document.getElementById("scrollableDiv").scrollTop = 0;
Чтобы избежать горизонтального подпрыгивания, убедитесь, что содержимое не переполняется. imhere

Похожие вопросы