gpt4 book ai didi

macos - Swift for OsX WebFrameLoadDelegate 不起作用

转载 作者:行者123 更新时间:2023-11-30 10:22:56 28 4
gpt4 key购买 nike

我是 OSX 开发新手,也是 Swift 开发新手。我想用 WebView 编写简单的应用程序。我可以加载 url,但我需要在 WebView 结束加载内容时捕获事件。

这是我的应用程序 delegate.swift 文件:

import WebKit

class AppDelegate: NSObject, NSApplicationDelegate{

@IBOutlet weak var window: NSWindow!
@IBOutlet var webview: WebView!

func applicationDidFinishLaunching(aNotification: NSNotification?) {
let url = NSURL(string: "google.com")
let request = NSURLRequest(URL: url);
webview.mainFrame.loadRequest(request);
}

func applicationWillTerminate(aNotification: NSNotification?) {
}
}

我尝试制作 WebFrameLoad 委托(delegate)类:

import WebKit

class WebViewControllerDelegate: WebFrameLoadDelegate{

@IBOutlet var webview: WebView!
override func didFinishLoadForFrame()
{
println("ok:");
}
}

这不起作用。而且我也不知道如何将此委托(delegate)设置为我的 WebView。TY 寻求答案。

最佳答案

一般来说,WebViewControllerDelegate 是将 webView 作为属性的类。

移动此代码:

@IBOutlet var webview: WebView!

let url = NSURL(string: "google.com")
let request = NSURLRequest(URL: url)
self.webview.mainFrame.loadRequest(request)

到您的WebViewControllerDelegate

然后,您还需要在 WebViewControllerDelegate 中设置 WebView 的委托(delegate)

self.webView.delegate = self

如果您不设置此项,系统将不会为您调用委托(delegate)方法。

最后,您需要确保您的类符合 WebFrameLoadDelegate 协议(protocol)(您已经完成了)。

class WebViewControllerDelegate: WebFrameLoadDelegate{

上面的内容意味着您有一个 viewController,它具有 webView 属性,符合正确的委托(delegate)协议(protocol),并且本身是 webView 的委托(delegate)。

然后将调用 WebViewControllerDelegate 中定义的委托(delegate)方法。

关于macos - Swift for OsX WebFrameLoadDelegate 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25199641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com