【发布时间】:2019-10-17 21:06:55
【问题描述】:
我刚开始学习 Swift,我正在尝试使用 Interface Builder 构建一个基本的 Web 浏览器。我遇到的问题是,一旦我将 WKWebView 嵌入到堆栈视图中,它就会停止显示任何内容(曾经称为 stackWebView)。如果 webview 在堆栈之外,在 ViewController 内(称为 topWebView),它会按预期工作。这是我到目前为止写的代码。我知道有以编程方式执行此操作的解决方案,但我试图了解 Interface Builder 和代码之间的交互。那么如何在堆叠的 webview 中显示内容呢?
import UIKit
import WebKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var urlName: UITextField!
@IBOutlet weak var stackWebView: WKWebView!
@IBOutlet weak var topWebView: WKWebView!
private func loadWebPage(_ s: String){
topWebView.load(URLRequest(url: URL(string: s)!))
stackWebView.load(URLRequest(url: URL(string: s)!))
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
urlName.text = textField.text
return true
}
func textFieldDidEndEditing(_ textField: UITextField) {
urlName.text = textField.text
loadWebPage(urlName.text!)
}
override func viewDidLoad() {
super.viewDidLoad()
urlName.delegate = self
let startURL = URL(string: "https://www.duckduckgo.com")
topWebView.load(URLRequest(url: startURL!))
stackWebView.load(URLRequest(url: startURL!))
}
}
【问题讨论】:
-
在界面构建器中添加stackiview,并通过编程方式将子视图排列为stackeview中的Web视图,或使用嵌入选项将它们组合在界面构建器中
-
我就是这样做的,将 Web 视图和文本字段嵌入到堆栈视图中。就在那时,Web 内容停止显示(对于名为 stackWebView 的非嵌入式 Web 视图,它显示得很好)。