2010-06-27 19 views
10

Nie wiem, czy to jest w ogóle możliwe, czy co do Google, aby znaleźć to, ale jak można dodać:iPhone HTML5 App Przewijanie Pytanie

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/> 

I uczyni to, że tak nie można przewijać z boku na bok, tylko w górę iw dół. Czy istnieje sposób, aby to zrobić, aby nie było efektu przeskoku, gdy osiągniesz koniec, ale nadal przewijasz, a potem wyskakuje? Podobnie jak aplikacje Cocoa zauważyłem, że "overscroll" czasami mają ten sam kolor tła, więc nie wygląda jak Safari czy po prostu w ogóle tego nie robi?

Odpowiedz

14

To, do kogo dzwonisz, to bounce. Niestety nie ma udokumentowanego sposobu wyłączenia bounce w UIWebView. Możesz spojrzeć na UIScrollView dla metod związanych z odskokiem. UIWebView jest właścicielem UIScrollView, ale nie udostępnia go.

Aby zapobiec przewijaniu w poziomie, wystarczy upewnić się, że strona internetowa mieści się w widocznym obszarze. Jedną z częstych przyczyn braku dopasowania jest element o szerokości 100%, gdy margines ciała nie wynosi zero.

Możesz całkowicie uniemożliwić przewijanie i odbijanie, dodając obsługę zdarzeń dotykowych do dokumentu i wywołując funkcję preventDefault na zdarzeniu. Spowoduje to skuteczne wyłączenie odskoku, jeśli Twoja strona całkowicie mieści się w oknie roboczym.

function stopScrolling(touchEvent) { touchEvent.preventDefault(); } 
document.addEventListener('touchstart' , stopScrolling , false); 
document.addEventListener('touchmove' , stopScrolling , false); 

Edit:

UIWebView jest w większości prywatna od strony Objective-C, ale dość dostępne z javascript strony. Jeśli nie masz kontroli nad ładowaną treścią, możesz inject javascript.

+0

bzdura, dzięki! Czy znasz sposób, aby zrobić (w/o JS), aby zrobić stałą pozycję? –

+0

@drawnonward. To zadziałało dla mnie świetnie, z wyjątkiem wyłączenia wszystkich moich menu "select". Czy jest jakiś sposób obejścia tego? – JSW189

5

Jeśli używasz Cordova 1.7+, wystarczy otworzyć plik Cordova.plist i ustawić klucz UIWebViewBounce do NO

w Cordova 2.3+, to teraz config.xml i trzeba ustawić go false .

2

@ JSW189

jeśli usunąć tę linię:

document.addEventListener('touchstart' , stopScrolling , false); 

Wtedy powinno działać, chyba. Dostałem problem, że nie mogłem już naciskać przycisku, próbuję usunąć powyższy wiersz i nie przewijałem go więcej i mogłem naciskać przyciski.

+0

To też zadziałało dla mnie – Mike