2014-11-07 2 views
-1

클래스에서 UIWebView의 대리자 메서드를 설정하려면 어떻게해야합니까?UIWebview에서 클래스의 대리자 메서드 설정

내가 할 때, 앱 카시.


@interface MineWebViewHandle : NSObject<UIWebViewDelegate> 

@end 

//.m

@implementation MineWebViewHandle 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = [[request URL] absoluteString]; 

    return YES; 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    NSLog(@"did start load"); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"did finished "); 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"webview error:%@",[error localizedDescription]); 
} 

내가 그것을 사용

self.m_pWebView = [[UIWebView alloc] initWithFrame:CGRectZero]; 
    MineWebViewHandle *handle = [[MineWebViewHandle alloc]init]; 
    self.m_pWebView.delegate = handle; 
    self.m_pWebView.backgroundColor = [UIColor whiteColor]; 
    [self.view addSubview:self.m_pWebView]; 

어떻게 바로 그것을 사용합니까?

+0

당신이 충돌 메시지를 추가 할 수 추가하세요? –

+0

왜 웹보기에 프레임이 표시되지 않습니까? 또한 위에서 언급 한 바와 같이 충돌 메시지를 게시 할 수 있습니다. – nikhil84

답변

0

위와 같은 모양은 viewDidLoad에서 create이며, 마지막에는 release (nil에 넣음)입니다.

MineWebViewHandle * handle이라는 속성을 만들어야합니다. 당신의 viewController.h에서

추가 :

@property (nonatomic,strong)MineWebViewHandle *handle; 

및 코드에서 변경 :

self.handle = [[MineWebViewHandle alloc]init]; 
self.m_pWebView.delegate = self. handle; 

그리고 좋은 생각이 당신의 웹보기는 차원이있을 것이다 키우면,이를 변경 :

self.m_pWebView = [[UIWebView alloc] initWithFrame:self.view.frame]; 
+0

감사합니다. 이게 나를 도와 줘! 네, viewDidLoad에서했습니다! 하지만 나는 ARC에서 "MineWebViewHandle * handle = [[MineWebViewHandle alloc] init]"핸들이 강력한 포인트를 가질 것이라고 생각합니다. 왜 출시됩니까? – user2305019

+0

개체의 강점에 관계없이 참조 카운팅이 0이면 개체가 해제됩니다. 문제는 객체 핸들에 +1 (alloc)이 있지만 메소드의 끝에 -1을 받고 소멸됩니다. 그럼에도 불구하고, 강한 속성에 넣으면 다른 +1이 추가됩니다. –

+0

오케이! 내가 참조! 고맙습니다! – user2305019

0

WebviewUIView입니다. 컨트롤러가 아닙니다.

NSObject를 제거하고 UIview

@interface MineWebViewHandle : UIView 
@end