我有一个基本的Cocoa应用程序,其窗口中只有WebView
。 {X} 10 6 (Mavericks)上的Xcode 6 beta 6 项目中添加了WebKit.framework
引用。我想知道WebView
何时完成加载页面。所以我创建了一个继承WebViewControllerDelegate
的{{1}}类。那已经是问题开始的地方:Xcode告诉我WebFrameLoadDelegate
。与this question on Stack Overflow有关,不应该。与已经提到的一样,项目引用了Use of undeclared type 'WebFrameLoadDelegate'
,并在Swift类文件中导入了WebKit.framework
模块。我还在" Headers"中看到了WebKit
。 Xcode左侧栏中的文件夹,位于WebFrameLoadDelegate.h
。
所有邪恶的根源是文件WebKit.framework
中的行11
(我忘了删除我在此省略的注释),类声明和协议引用。
TestWebView/WebViewControllerDelegate.swift
import WebKit
class WebViewControllerDelegate: WebFrameLoadDelegate {
func didFinishLoadForFrame() {
NSLog("didFinishLoadForFrame()")
}
}
,用于设置所有内容:
AppDelegate
有关详细信息,请查看我为此问题创建的my public repository中的代码。
答案 0 :(得分:3)
WebFrameLoadDelegate
是一种非正式协议,因此您无法声明其符合性。只需从NSObject
继承并实现所需的方法。
另请注意,Swift方法名称为webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!)
,而不仅仅是didFinishLoadForFrame()
。
class WebViewControllerDelegate: NSObject { // WebFrameLoadDelegate
override func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) {
NSLog("didFinishLoadForFrame()")
}
}