所以,我一直在看文档和谷歌搜索,但是当我的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何时加载另一个页面。
我可能做了一些非常愚蠢的事情,所以任何帮助都会受到赞赏。
答案 0 :(得分:2)
实施WebFrameLoadDelegate协议,并查看哪些方法适合实施,例如webView:didFinishLoadForFrame:
。
示例:
@interface SNAFBrowser : WebView <WebFrameLoadDelegate>
...
@end
@implementation SNAFBrowser
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
NSLog(@"Something got loaded!");
}
...
@end