0

所以,我一直在查看文档和谷歌搜索,但我无法弄清楚当我的 WebView(OSX,不是 iOS)发生变化时如何调用方法......所有示例似乎都是针对 iOS 的。我的代码如下所示:

SNAFAppDelegate.h

#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>

@interface SNAFAppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;

@property (assign) IBOutlet WebView *browser;

- (IBAction)forwards:(id)sender;


@end

SNAFAppDelegate.m

#import "SNAFAppDelegate.h"

@implementation SNAFAppDelegate

@synthesize window = _window;
@synthesize browser = _b;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[_b mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://google.com"]]];
}

@end

SNAFBrowser.h

#import <Cocoa/Cocoa.h>
#import <WebKit/WebView.h> 
#import <WebKit/WebFrame.h>
#import <WebKit/WebEditingDelegate.h>
#import <WebKit/WebKit.h>


@interface SNAFBrowser : WebView

@property (assign) IBOutlet WebView *browser;

@end

SNAFBrowser.m

#import "SNAFBrowser.h"

@implementation SNAFBrowser

@synthesize browser = _b;

- (void)webViewDidChange:(NSNotification *)notification
{
    NSLog(@"Hello World");
}

@end

然后,在我的 MainMenu.xib 文件中,我将 AppDelegate 中的 Outlet“浏览器”链接到 WebView,并将 WebView 的自定义类设置为 SNAFBrowser。

本质上,我只想知道 webview 何时加载另一个页面。

我可能正在做一些可笑的愚蠢的事情,所以任何帮助表示赞赏。

4

1 回答 1

2

实现WebFrameLoadDelegate协议,看看哪些方法适合实现,例如webView:didFinishLoadForFrame:.

例子:

@interface SNAFBrowser : WebView <WebFrameLoadDelegate>
...
@end

@implementation SNAFBrowser
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
   NSLog(@"Something got loaded!");
}
...
@end
于 2012-05-20T14:01:27.937 回答