2013-04-06 4 views
7

Ho uno "dettagli prodotto" UIViewController sullo storyboard che ha uno UIWebView per visualizzare "rich text" (in grassetto e in corsivo). La visualizzazione Web viene caricata utilizzando una stringa (recuperata da CoreData) loadHTMLString. Il problema è che la prima volta che viene visualizzata la vista, c'è almeno un secondo di ritardo prima del rendering della vista web. Ulteriori viste "dettagli del prodotto" caricate vengono caricate correttamente. È solo la prima web view "dettagli prodotto" che richiede tempo per essere caricata.UIWebView si sta caricando molto lentamente la prima volta che viene visualizzato in uno specifico UIViewController

Questo è quello che ho provato (con gioia)

  1. Visualizzazione di un UIWebView con il testo nella prima schermata (per riscaldare l'UIWebView)
  2. Quando arriva il momento di mostrare vista dei dettagli, init la vista Web nel metodo prepare for segue e passarla al controller della vista "dettagli del prodotto".
  3. ho provato varie combinazioni di avere la visualizzazione Web nello storyboard/non nella storyboard/in un'etc vista di scorrimento

sarei molto interessato se altri hanno avuto questo problema e come sono arrivati ​​su di esso/lavorato intorno ad esso. Trovo strano non sono stato in grado di trovare molti problemi simili su SO; Devo fare qualcosa di stupido ...


Nota, sto usando un UIWebView in modo da poter visualizzare il rich text. Capisco che posso visualizzare rich text usando altri controlli, ma il programma che rende il testo che voglio visualizzare può esportare solo testo RTF usando HTML.

+2

Hai provato precarico la stringa HTML Core Data inverosimile? Potrebbe essere che il componente lento sia Core Data, non UIWebView. (Inoltre, piuttosto che indovinare, si consideri in esecuzione la vostra applicazione sotto Instruments -. Dovrebbe dirvi dove il tempo sta andando) – Tim

+0

Potreste essere interessati a progetti come [DTCoreText] (https://github.com/Cocoanetics/DTCoreText), che ti consente di analizzare l'HTML in qualcosa che puoi visualizzare senza la pesante e pesante webview. –

+0

Tim, ho provato il tuo suggerimento (ma grazie). @JesseRusak, darò un'occhiata a DTCoreText. Grazie –

risposta

3

Invece di utilizzare un UIWebView per visualizzare ricco contenuto del testo, si può provare a utilizzare OHASBasicHTMLParser di OHAttributedLabel che è compatibile con le versioni precedenti a iOS 6.

È possibile trovare un esempio del suo parser markup here.

+0

Grazie. Questa è la migliore risposta così vi darà la cinquantina. E 'un peccato che non posso dividere i punti con [Jesse Rusak] (http://stackoverflow.com/questions/15846850/uiwebview-is-loading-very-slowly-on-the-first-time-it-is- mostrata-in-specifici per un/16020957?noredirect = 1 # comment22628155_15846850), dato che ha dato una risposta simile, ma nei commenti. Per gli altri: il suo suggerimento era [DTCoreText] (https://github.com/Cocoanetics/DTCoreText). Non li ho ancora valutati, ma entrambi sembrano fare il lavoro. –

+0

Ho bisogno di qualcosa di simile nella mia APP Potete per favore descriverlo di più Come posso ridurre il tempo di caricamento ed evitare solo contenuti appropriati da WebView. Devo mostrare solo i contenuti correlati. Grazie in anticipo. – JAck

6

Questo è un problema comune per UIWebView. La mia soluzione alternativa è rendere inizialmente la vista Web nascosta (mostrando invece una sorta di indicatore "Caricamento in corso ..."), quindi renderla nascosta nel metodo webViewDidFinishLoad:.

+0

Ho già provato questo tipo di lavoro. Non mi piaceva il tempo di caricamento. –

+0

Hai provato il suggerimento di 'ararog'? Sembra che sia esattamente ciò di cui hai bisogno. – MusiGenesis