0

我遇到了 WKWebview 和导航委托的问题。如果我在没有断点的情况下执行应用程序,则永远不会调用委托。如果我在创建 webview 之后在某处设置断点,并调用 loadHtmlString 方法,则正确调用委托。

以下是我正在做的简化版本:

//This custom view is part of a ViewController where the user interface was designed
// using the storyboardeditor
class CustomContainerView:UIView{
         @IBOutlet weak var viewContainer: UIView!
        
        public func render(){
        
                let behaviour: IViewBehaviour = self.getBehaviour(slice) //In this case, the behaviour is an instance of the class BehaviourN3
                let view = behaviour.getView() //In this case the returned view is a WKWebView
        
                viewContainer.addSubview(view)
                view.bindFrameToSuperviewBounds(0)
                behaviour.render()
        
        }
        }
    }
        
     public class BeahviourN3: BaseBehaviour, WKNavigationDelegate{
            
             internal var webView: WKWebView!
            
                required init() {
                   
                    webView = createWebView()
            
                    
            
                }
            
            override func getView() -> UIView {
                    return webView
                }
            
            
             override func render() {
                    
                   webView.navigationDelegate = self
        // If I set a breakpoint before calling the loadHtmlString method, and wait a couple of seconds then the 
        // delegate is called succesfully
        
                   webView.loadHTMLString(html, baseURL: myBaseUrl)
                }
            
            
            }
            
            
              public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
                    self.evaluateBodyHeight()
              }
            
            }

我知道如果没有显示视图,则不会调用 WKWebView 的导航委托(我过去遇到过这个问题)。但在这种情况下,webview 被添加到一个正在显示和可见的 viewcontainer 中。

我想在设置断点时,操作系统有更多时间来做它的事情,并且不知何故会有所不同,但我不知道如何解决这个问题。

有任何想法吗?

先感谢您。

4

0 回答 0