2012-05-20 3 views
0

그래서 저는 문서 및 인터넷 검색을보고 있었지만 WebView (OSX, iOS가 아닌)가 변경 될 때 메소드를 호출하는 방법을 알아낼 수 없습니다 ... 모든 예제 iOS를위한 것 같습니다. 내 코드는 다음과 같습니다WebView가 변경 될 때 호출 기능

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 
,536을

내 MainMenu.xib 파일에서 AppDelegate의 Outlet "브라우저"를 WebView에 연결하고 WebView의 사용자 지정 클래스를 SNAFBrowser로 설정했습니다.

본질적으로, 나는 언제 webview가 다른 페이지를로드하는지 알고 싶습니다.

저는 어리석게도 무언가를하고 있습니다. 따라서 도움을 주시면 감사하겠습니다.

+0

이 방법은 WebEditingDelegate 프로토콜입니다, 당신은 자신이 프로토콜을 설정하고 대리인에게 확인해야합니다. – rishi

+0

webViewDidChange 메소드에'[_b setDelegate : self];를 추가하려고 시도했지만 'WebView'에 대한 표시가없는 @interface가 선택기 'setDelegate :'를 선언합니다. 프로토콜을 확인하면 무엇을 의미합니까? – citruspi

답변

2

WebFrameLoadDelegate 프로토콜을 구현하고 구현에 적합한 방법을 확인하십시오 (예 : webView:didFinishLoadForFrame:).

예 :

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

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

나에게''WebFrameLoadDelegate '에 대한 프로토콜 선언을 찾을 수 없다. – citruspi

+0

고마워! – citruspi

+0

어떻게 @ citruspi로 고쳤습니까? –

관련 문제