objective-c - NSDocument 使用 WebKit 显示页面名称

标签 objective-c macos cocoa nsdocument

我试图让 WebKit 显示当前打开的文档窗口的页面标题,其中包括 WebView。运行应用程序后,该文档不会显示。

我正在使用 Document.m 和 windowNibName 来实现此目的,但我确信我所做的事情是错误的。我认为这可能是两个 NSStrings 一起使用的,但我不能拥有。虽然如果我没有它们,我无法返回文档标题...(WebKit/WebKit.h 已导入)

   - (NSString)windowNibName:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
{
    // Report feedback only for the main frame.
    if (frame == [sender mainFrame]){
        [[sender window] setTitle:title];
    }
    return @"Document";
}

最佳答案

您已经实现了一个名为 windowNibName:didReceiveTitle:forFrame: 的方法,但是没有任何东西发送这样的消息(除非是,但如果您是,那么您就留下了该消息代码输出)。

正确的方法名称是webView:didReceiveTitle:forFrame: 。假设窗口中只有一个 Web View ,文档中也只有一个窗口,并且文档是 Web View 的委托(delegate),那么您可以简单地 set the document's display name从那里开始。

如果您遇到更复杂的情况,每个窗口有多个 Web View 和/或每个文档有多个窗口,那么您需要向 Web View 请求 its windowits window controller 的窗口,以及 its document 的窗口 Controller ,然后如上设置文档的显示名称。

此外,windowNibName 与将文档标题设置为网页标题无关。 Web View 可能还没有开始加载页面,即使它有要加载的 URL。这就是为什么您需要成为 Web View 的委托(delegate)并响应该委托(delegate)消息。

关于objective-c - NSDocument 使用 WebKit 显示页面名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927515/

相关文章:

c++ - 在 xcode 4 中找不到文件

objective-c - 何时使用 'self' 访问属性

python - 如何通过 python 子进程与 mac 上的应用程序交互?

ios - 模态呈现的 UISplitViewController 永远不会被释放

objective-c - 如何在 NSBrowser 中突出显示一行?

swift - NSOperationQueue 在计算任务上的性能比单线程差

iphone - iPhone SDK 模拟器的推荐系统要求是什么?

javascript - 与 Sproutcore+Phonecap/Titanium 相比,使用 Cocoa 创建 iPhone、iPad 和 Mac 应用程序有何优势?

macos - 脚本桥接并生成 Microsoft Word 头文件

cocoa - 获取打开的windows cocoa列表