WebView更改时调用函数

时间:2012-05-20 12:46:54

标签: objective-c cocoa webview

所以,我一直在看文档和谷歌搜索,但是当我的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文件中,我将Outlet“浏览器”从AppDelegate链接到WebView,并将WebView的自定义类设置为SNAFBrowser。

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

我可能做了一些非常愚蠢的事情,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

实施WebFrameLoadDelegate协议,并查看哪些方法适合实施,例如webView:didFinishLoadForFrame:

示例:

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

@implementation SNAFBrowser
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
   NSLog(@"Something got loaded!");
}
...
@end