在 UIView 中创建 WKWebView

Posted

技术标签:

【中文标题】在 UIView 中创建 WKWebView【英文标题】:Create a WKWebView in a UIView 【发布时间】:2015-09-04 13:16:41 【问题描述】:

我正在尝试在 UIView 中添加 WKWebView ,

代码似乎工作正常(页面加载边界很好,委托打印消息没有错误) 但是视图(称为 ViewForStuffInWeb )保持空白,里面什么都没有 有人能解释一下为什么吗?

import UIKit
import WebKit

class ViewController: UIViewController ,WKNavigationDelegate  


@IBOutlet var ViewForStuffInWeb: UIView!

var webView = WKWebView()
let request =  "https://www.google.fr"



override func viewDidAppear(animated: Bool) 
    super.viewDidAppear(animated)
    self.automaticallyAdjustsScrollViewInsets = false
    let config = WKWebViewConfiguration()
    webView = WKWebView(frame: ViewForStuffInWeb.bounds ,configuration : config)
    webView.navigationDelegate = self
    ViewForStuffInWeb = webView
    println("webview : frame :\(webView.frame)  , bounds : \(webView.bounds)")
    requesting(request)
    

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.


func requesting (request :String) 
    if let url = NSURL(string: request) 
        webView.loadRequest(NSURLRequest(URL: url))
    




override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) 
    println("decide policy action")
    decisionHandler(WKNavigationActionPolicy.Allow)

func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) 
    println("decide policy response")
    decisionHandler(WKNavigationResponsePolicy.Allow)

func webView(webView: WKWebView, didCommitNavigation navigation: WKNavigation!) 
    println("commit navigation")

func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) 
    println("fail in didFailNavigation \(error)")

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) 
    println("fail in didFailProvisionalNavigation \(error)")

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) 
    println("finish navigation")

感谢阅读

【问题讨论】:

【参考方案1】:

您永远不会将WKWebView 添加到视图层次结构中。在您的viewDidAppear 中,哪些代码应该真正移动到viewDidLoad,您可能想要替换:

ViewForStuffInWeb = webView 

与:

ViewForStuffInWeb.addSubview(webView)

虽然不清楚ViewForStuffInWeb 究竟是什么。仅当该视图存在于您的 nib 中并且已连接时,上述操作才有效。

【讨论】:

以上是关于在 UIView 中创建 WKWebView的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UIPopover 中的 UIButton 在主 UIView 中创建 UITextView?

在 Swift 中创建自定义 UIView 并显示为弹出窗口

如何在 Xcode 中创建自定义 UIView?

尝试在 Swift 中创建圆形 UIView 时出错

如何通过按下图像导航到另一个 UIView 控制器(之前在情节提要中创建)

如何在 Swift 4 的 UIView 中创建带圆角的渐变边框