/ / UIWebView zostáva prázdny pri načítaní reťazca HTML - ios, swift, uiwebview

Pri načítaní reťazca HTML zostáva rozhranie UIWebView prázdne - ios, swift, uiwebview

mám UIWebView vo svojej aplikácii a pokúšam sa použiť loadHTMLString(_:, baseURL:) načítať HTML, ktoré je uložené v súbore String v aplikácii. Webové zobrazenie sa vždy zobrazí ako obyčajný sivý obdĺžnik bez obsahu. Ak uložím reťazec HTML do súboru a načítam ho v prehliadači Safari na počítači Mac, stránka sa vykreslí podľa očakávania.

Myslel som si, že to môže byť niečo o HTML, tak som to zredukoval na minimálny test, ktorý dosiahne rovnaké výsledky:

let myHTMLString = "<html><head></head><body><p>This is a test</p></body></html>"
myWebView.loadHTMLString(myHTMLString, baseURL: nil)

Stále sivý obdĺžnik.

Prehľadal som tu ďalšie odpovede, aby som skontroloval a overil rôzne potenciálne relevantné podrobnosti:

  • Povolenie ľubovoľného načítania nemá žiadny účinok. Niežeby to malo vplyv na môj testovací prípad vyššie, ale niektorí ľudia s tým majú problémy.
  • Na vzdialené ladenie súboru som použil Safari UIWebView. K dispozícii je všetok obsah, ktorý v aplikácii pre systém iOS jednoducho nie je viditeľný.
  • Veľkosti zobrazené pri ladení zo Safari sa zhodujú s tým, čo vidím, ak používam ladiaci nástroj na zobrazenie Xcode. Je zobrazené webové zobrazenie a Safari ukazuje, že má správnu veľkosť.
  • Som implementoval UIWebView delegovať metódy a nastaviť vlastnosť delegáta. Dostávam telefonáty na webViewDidStartLoad(_:), webViewDidFinishLoad(_:), a webView(_:shouldStartLoadWith:navigationType:), a v poslednom prípade sa vždy vrátim true. Nie je hlásená žiadna chyba- nikdy nedostanem a webView(_:didFailLoadWithError:).
  • Ak zmením farbu pozadia súboru UIWebView Mám inú farbu obdĺžnika, ale stále nevidím žiadny viditeľný obsah stránky.

Čo mi ušlo? Malo by ísť o triviálny prípad, ale nevidím žiadny viditeľný obsah.

odpovede:

1 pre odpoveď č. 1

Je dosť zvláštne, že sa vám zobrazuje chyba, ale už ste sa pokúsili nastaviť hodnotu pre baseURLparameter? Niečo ako: URL(string: "www.google.com")


1 pre odpoveď č. 2

Skúste nový, prázdny UIViewController, pričom ako kód zadajte iba toto:

import UIKit

class TestViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let newWebView = UIWebView(frame: CGRect(x: 8, y: 8, width: 300, height: 400))
self.view.addSubview(newWebView)

// cyan background html
let myHTMLString = "<html><head></head><body bgcolor=#00ffff><p>This is a test</p></body></html>"
newWebView.loadHTMLString(myHTMLString, baseURL: nil)
}

}

1 pre odpoveď č. 3

Po preskúmaní a vyskúšaní nového projektu (inšpirovaný odpoveďou spoločnosti @DonMag) sa zdá, že problémom je, že UIWebView bol obsiahnutý v a UIStackView. Napriek tomu, že rozmery webového zobrazenia boli správne, nejakým spôsobom to bránilo vykresľovaniu obsahu. Skúsil som to v jednoduchom testovacom projekte a správanie sa prenáša- jednoducho UIWebView sám o sebe funguje, ale ten, ktorý je obsiahnutý v zobrazení zásobníka, nevykresľuje jeho obsah, aj keď je jeho veľkosť správna.

Neviem, prečo to je alebo či existuje nejaký trik, ktorý by som mohol použiť na správne fungovanie webového zobrazenia v zobrazení zásobníka. Ale príčina je jasná, ak nie dôvod.