/ / UIWebView остава празен при зареждане на HTML низ - ios, swift, uiwebview

UIWebView остава празен при зареждане на HTML низ - ios, swift, uiwebview

имам UIWebView в моето приложение и се опитвам да го използвам loadHTMLString(_:, baseURL:) за да заредите HTML, който се съхранява в String в приложението. Изгледът в мрежата винаги се показва като обикновен сив правоъгълник без съдържание. Ако запиша HTML низа във файл и го заредя в Safari на моя Mac, страницата се показва както се очаква.

Мислех, че може би става дума за HTML, така че го намалих до минимален тест, който получава същите резултати:

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

Все още сив правоъгълник.

Тук разгледах други отговори, за да проверя и проверявам различни евентуално уместни подробности:

  • Разрешаването на произволни товари няма ефект. Не че би трябвало да има значение с моя тестов случай по-горе, но някои хора са имали проблеми с това.
  • Използвах Safari за отдалечено отстраняване на грешки UIWebView, Цялото съдържание е там, то просто не се вижда в приложението за iOS.
  • Размерите, показани при отстраняване на грешки от Safari, съвпадат с това, което виждам, ако използвам грешката за изглед на Xcode. Изгледът в мрежата е видим, а Safari показва, че е с правилния размер.
  • Внедрих UIWebView делегирайте методи и задайте свойството на делегата. Получавам обаждания до webViewDidStartLoad(_:), webViewDidFinishLoad(_:), и webView(_:shouldStartLoadWith:navigationType:), а в последния случай винаги се връщам true, Не се съобщава за грешка - никога не получавам webView(_:didFailLoadWithError:).
  • Ако променя цвета на фона на UIWebView Получавам различен цвят правоъгълник, но все още не получавам видимо съдържание на страницата.

Какво съм пропуснал? Това трябва да е тривиален случай, но не получавам видимо съдържание.

Отговори:

1 за отговор № 1

Доста странна е грешката, която получавате, но вече сте опитвали да зададете стойност baseURLпараметър? Нещо като: URL(string: "www.google.com")


1 за отговор № 2

Опитайте свеж, празен UIViewController, като само това е кодът:

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 за отговор № 3

След проучване и опит на нов проект (вдъхновен от отговора на @DonMag), изглежда, че проблемът е, че UIWebView се съдържаше в a UIStackView, Въпреки че размерите на уеб изгледа бяха правилни, това по някакъв начин не му позволяваше да изобразява съдържание. Опитах това в обикновен тестов проект и поведението се пренася - просто UIWebView сам по себе си работи добре, но този, съдържащ се в изглед на стека, не показва съдържанието му, дори ако размерът му е правилен.

Не знам защо това е или има ли един трик, който бих могъл да използвам, за да накарам уеб изглед да работи правилно в изглед на стек. Но причината е ясна, ако не и причината.