Pytanie w sprawie objective-c, ios, mobile-safari, cordova, javascript – Wyłącz efekt odbicia pionowego w aplikacji internetowej ipad

4

Czy istnieje sposób na wyłączenie efektu odbijania w przewijanym div?

Do tej pory próbowałem tych rzeczy, ale żaden nie działał. Proszę pomóż!

Jak wyłączyć odbijanie / przewijanie w pionie na iPhone w aplikacji mobilnej

Nie można wyłączyć odbicia za pomocą UIScrollView i pagingEnabled = YES

ipad safari: wyłącz przewijanie i efekt odbijania?

Wyłącz UITableView pionowe odbicia podczas przewijania

I

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

Dzięki!

Nie było żadnych błędów. imhere
Link, który zamieściłem, wygląda również tak, jakby zawierał rozwiązanie PhoneGap. Możesz spróbować. woz
Jest to jedno z podejść, które zastosowałem - document.ontouchmove = function (event) {event.preventDefault (); } var myDiv = document.getElementById ("scrollableDiv"); myDiv.ontouchmove = function (event) {event.stopPropagation (); } imhere
Czy masz jakieś błędy w konsoli błędów dla któregokolwiek z rozwiązań? woz

Twoja odpowiedź

5   odpowiedzi
1

który chcesz nadal przewijać.

Co się dzieje, wszystkie ruchy dotykowe są domyślnie wyłączone. Jeśli element, który chcesz przewijać, ma na sobie klasę .scroll, ustawia bramę na true, aby umożliwić jej przejście.

Po dotknięciu, resetujesz bramę do fałszywej.

Działa to na IOS5 i 6 i może działać w Chrome i Safari

Sprawdź @ tego posta, aby go rozszerzyć
Jak zapobiec przewijaniu strony podczas przewijania elementu DIV?

Jedynym haczykiem jest to, że jeśli przewiniesz przewijany element, efekt sprężystości pozwala przewinąć przewijanie drzewa, podczas gdy przewijanie jest ustawione na true. Ręczne ustawienie pozycji przewijania zostaje zastąpione przez przerażający efekt odbicia.
Założę się, że te fregaty Apple mają natywną implementację przewijania w ustalonym czasie, z każdym krokiem podłączonym do sieci.

Więc jeśli przewiniesz do -20, myślę, że trudno jest przypiąć każdy krok do pętli, nie sprawdzając, gdzie był. Przewijanie kolejno do -20 -19 -18 itd.

Musimy wymyślić sposób na to! (w rzeczywistości wpisując ładunek mam pomysł!)

$(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
  })  
})
1

którego używasz, całkowicie uniemożliwia przewijanie. Jeśli chcesz przewijać, ale bez efektu odbicia, spróbuj czegoś takiego:

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();
    }
});

Znalazłem to rozwiązanietutaj. Daj mi znać, jeśli to działa dla ciebie.

Dzięki, ale to wyłącza odbijanie i przewijanie. imhere
Nadal nie działa. imhere
Właśnie edytowałem kod. Powinienem był użyćdocument.getElementById("scrollableDiv").addEventListener(... zamiastdocument.addEventListener(... w obu miejscach. To może dlatego nie działa. woz
0

Oto co zrobiłem -

#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;
Aby uniknąć odbijania poziomego, upewnij się, że zawartość nie jest przepełniona. imhere
3

Otwórz projekt swojego telefonuconfig.xml plik i zmień UIWebViewBounce z domyślnego true na false:

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

Nie wyobrażam sobie, dlaczego domyślnie jest prawdziwe ...

Ostatni komentarz russter działa idealnie dla mnie w Cordova 3.3 Moje życie zostało uratowane. dzięki. JSG33kC0d3
Wierzę, że nowa preferencja, jeśli masz późniejszą wersję phonegap / cordova, to <preference name = "DisallowOverscroll" value = "true" /> Przynajmniej to działało dla mnie z cordova 2.7.0 russter
6

Cordova.plist plik i ustaw kluczUIWebViewBounce doNIE.

Na szczęście ten facet znalazł lepsze rozwiązanie, dziękuję! Likwid_T
dzięki za twój wkład, ale znalazłem już rozwiązanie. imhere

Powiązane pytania