2010-06-27 12 views
10

Non so se questo è ancora possibile o cosa Google per trovarlo, ma come è possibile aggiungere:iPhone HTML5 App scorrimento Domanda

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

e sarà fare in modo non è possibile scorrere da un lato all'altro, solo su e giù. C'è un modo per farlo in modo che non faccia quell'effetto di overscroll quando arrivi alla fine ma continui a scorrere e poi torna indietro? Come le app Cocoa ive hanno notato che "overscroll" a volte hanno lo stesso colore di sfondo, quindi non sembra Safari o semplicemente non lo fa affatto?

risposta

14

Quello che si chiama overscroll si chiama bounce. Sfortunatamente non esiste un modo documentato per disattivare il bounce in un UIWebView. È possibile consultare UIScrollView per i metodi relativi al rimbalzo. Un UIWebView possiede un UIScrollView ma non lo espone.

Per evitare lo scorrimento orizzontale, è sufficiente assicurarsi che la pagina Web si adatti alla vista. Una causa comune di non adattamento è un oggetto di larghezza del 100% quando il margine del corpo non è zero.

È possibile impedire completamente lo scorrimento e il rimbalzo aggiungendo gestori di eventi tocco al documento e chiamando preventDefault sull'evento. Questo disabiliterà efficacemente il rimbalzo se la tua pagina web si adatta completamente al viewport.

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

Edit:

UIWebView è in gran parte privato da parte Objective-C ma abbastanza accessibile dal lato javascript. È possibile inject javascript se non si controlla il contenuto da caricare.

+0

merda, grazie! Sapere di un modo per fare (senza JS) di fare una posizione fissa allora? –

+0

@drawnonward. Questo ha funzionato benissimo per me, tranne che disabilitato tutti i miei menu 'select'. C'è un modo per aggirare questo? – JSW189

5

Se stai usando Cordova 1.7+, basta aprire il file Cordova.plist e impostare la chiave UIWebViewBounce-NO

a Cordova 2.3 e versioni successive, questo è ora Config.xml ed è necessario impostarlo su false .

2

@ JSW189

se si elimina questa linea:

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

allora dovrebbe lavorare, immagino. Ho avuto il problema che non potevo più premere il pulsante, provo a cancellare questa riga sopra e non scorre più e ho potuto premere i pulsanti.

+0

Anche questo ha funzionato per me – Mike