Il UIWebView class reference scoraggia incorporare un UIWebView in un UIScrollView:
Importante: Non si dovrebbe incorporare UIWebView o UITableView oggetti in oggetti UIScrollView. In tal caso, un comportamento imprevisto può comportare in quanto è possibile confondere gli eventi di tocco per i due oggetti e gestire erroneamente .
Tuttavia suppongo che si vuole ancora implementare la funzione ;-)
Idea 1: Non incorporare l'UIWebView in un UIScrollView, invece eseguire JavaScript utilizzando il metodo di UIWebView stringByEvaluatingJavaScriptFromString:
, modificando il DOM per aggiungi una barra degli strumenti qui sotto. Se necessario, è possibile richiamare il codice obiettivo-c da qualsiasi pulsante premuto sulla barra degli strumenti registrando alcuni schemi URL personalizzati.
Idea 2: non incorporare UIWebView in un UIScrollView, ma in un normale UIView. Basandosi sul suggerimento di Vignesh, ascolta la callback della tua scrollView interna scrollViewDidScroll:
tramite il delegato, controllando l'altezza dello contentOffset
rispetto all'unità contentSize
ogni volta che viene richiamata la richiamata. Una volta che sono uguali, significa che sei arrivato fino in fondo. Quando ciò accade, puoi animare la cornice della tua barra degli strumenti per "inserire" l'UIView che contiene e "spingere" la cornice della webView.
Idea 3: ignorare il consiglio di Apple e incorporare UIWebView in un UIScrollView. Basandosi sul suggerimento di Vignesh, ascolta la callback della tua scrollView interna scrollViewDidScroll:
tramite il delegato, controllando l'altezza dello contentOffset
rispetto all'unità contentSize
ogni volta che viene richiamata la richiamata. Una volta che sono uguali, significa che sei arrivato fino in fondo. Quando ciò accade, imposta la proprietà userInteractionEnabled
di webView su NO e impostala su SÌ sulla scrollView che contiene la visualizzazione Web e la barra degli strumenti. Si spera che lo scroll continui senza problemi. Ovviamente è necessario ascoltare la visualizzazione di scorrimento contenente allo stesso modo per determinare quando è necessario tornare indietro allo userInteractionEnabled
.
Una variazione su questa idea sarebbe quella di impostare userInteractionEnabled
su NO per la visualizzazione Web, ma impostare l'altezza del frame della WebView in modo che corrisponda a contentSize, e anche ingrandire il contentSize dello scrollView di conseguenza.
Entrambe le varianti hanno lo svantaggio che in alcuni casi non sarà possibile fare cose come fare clic sui collegamenti :-(Ma forse è abbastanza buono per il tuo caso. Almeno nella prima variante non è poi così male.
Tecniche