SwiftUI 布局中的 WKWebViews 得到更新 - 变成空白
WKWebViews in SwiftUI layout get updated - become blank
我的 iOS SwiftUI 应用在布局中有一些 WKWebView。
可以通过创建一个包含 WKWebView 的特殊视图来实现,正如其他 SO 问题所知道的那样。
包括合适的方法:
func webView(_ webView: WKWebView,
didFinish navigation: WKNavigation!)
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
func makeUIView(context: Context) -> WKWebView
func updateUIView(_ uiView: WKWebView, context: Context)
主屏幕有两个 WKWebView,一个在左边,另一个在右边,在包含 WebView 的两个不同视图中(这就是我命名 WKWebView 封闭视图的方式)。
所以在一个HStack中有两个view,而且他们分屏了。
这些视图中的每一个都有自己的布局,但其中也有一个 WebView。
左侧 WebView 正确显示应用创建的 HTML 页面。
右边的WebView里面有一个可编辑的文本区域。
以下是在iOS模拟器上测试的,不知道在真机上是否一样,但很有可能。
当我编辑一些文本时,我认为布局重新计算并且我体验到两个WebView变成空白,
并调用updateUIView方法。
正文中的 WebView 引用了在正文外部分配的变量,因此
就像
左视图
var body: some View
{
leftWebView
}
而不是
var body: some View
{
LeftWebView()
}
因此不应重新创建它。
确实我认为它没有重新创建,但它变成了空白。
我找到了可能的解决方案或解决方法。
代码我就不提供了,不知道好不好,就总结一下吧
对我有用。
而不是在 SwiftUI 视图中嵌入 WKWebView
我在 SwiftUI 视图中嵌入了一个 ViewController。
SwiftUI View 端的实现只是一些不同。
示例很容易找到。
这个 ViewController 承载一个从 xib 文件加载的视图,它是一个简单的视图,我在设计器工具中创建它,没有创建出口或其他麻烦。
然后以编程方式将 WKWebView 添加到 UIView。
所以,碰巧的是,我的应用程序中的 WKWebViews 不会受到 SwiftUI 布局层次结构循环的困扰,并且可以正确显示。
其中之一被编辑或布局更改时,它们不会变成空白。
我的 iOS SwiftUI 应用在布局中有一些 WKWebView。
可以通过创建一个包含 WKWebView 的特殊视图来实现,正如其他 SO 问题所知道的那样。
包括合适的方法:
func webView(_ webView: WKWebView,
didFinish navigation: WKNavigation!)
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
func makeUIView(context: Context) -> WKWebView
func updateUIView(_ uiView: WKWebView, context: Context)
主屏幕有两个 WKWebView,一个在左边,另一个在右边,在包含 WebView 的两个不同视图中(这就是我命名 WKWebView 封闭视图的方式)。
所以在一个HStack中有两个view,而且他们分屏了。
这些视图中的每一个都有自己的布局,但其中也有一个 WebView。
左侧 WebView 正确显示应用创建的 HTML 页面。
右边的WebView里面有一个可编辑的文本区域。
以下是在iOS模拟器上测试的,不知道在真机上是否一样,但很有可能。
当我编辑一些文本时,我认为布局重新计算并且我体验到两个WebView变成空白,
并调用updateUIView方法。
正文中的 WebView 引用了在正文外部分配的变量,因此
就像
左视图
var body: some View
{
leftWebView
}
而不是
var body: some View
{
LeftWebView()
}
因此不应重新创建它。
确实我认为它没有重新创建,但它变成了空白。
我找到了可能的解决方案或解决方法。
代码我就不提供了,不知道好不好,就总结一下吧
对我有用。
而不是在 SwiftUI 视图中嵌入 WKWebView
我在 SwiftUI 视图中嵌入了一个 ViewController。 SwiftUI View 端的实现只是一些不同。
示例很容易找到。
这个 ViewController 承载一个从 xib 文件加载的视图,它是一个简单的视图,我在设计器工具中创建它,没有创建出口或其他麻烦。
然后以编程方式将 WKWebView 添加到 UIView。
所以,碰巧的是,我的应用程序中的 WKWebViews 不会受到 SwiftUI 布局层次结构循环的困扰,并且可以正确显示。
其中之一被编辑或布局更改时,它们不会变成空白。