为什么WebFrameLoadDelegate被视为未声明?

时间:2014-08-28 11:25:57

标签: xcode macos webview swift webkit

我有一个基本的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中的代码。

1 个答案:

答案 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()")
    }
}