방법

2010-11-29 4 views
5

히 모든, 나는 다음과 같은 메서드를 호출 할 때 새 페이지를로드 할방법

을 .... 나는 ...

다음 코드를 사용하고
 


(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id)listener 
{ 
    [[myWebView mainFrame] loadRequest:someRequest]; 
} 
 

이 메서드는 여러 번 호출되며 loadRequest 대신 [listener use]를 사용하면 응용 프로그램이 충돌하지만 클릭 한 URL을 시작합니다. 하지만 다른 URL을로드하고 싶습니다. 어떻게 가능합니까?

답변

1

당신이 말한대로 그것은 여러 번 호출, 그래서이주의를 지불해야 :
[actionInformation valueForKey: @"WebActionNavigationTypeKey"]

이 값은 WebNavigationType 열거 중 하나 여야합니다 :
WebNavigationTypeLinkClicked,
WebNavigationTypeFormSubmitted,
WebNavigationTypeBackForward,
WebNavigationTypeReload,
WebNavigationTypeFormResubmitted,
WebNavigationTypeOther

먼저 WebNavigationTypeLinkClicked를 얻을 것이다 클릭 한 링크의 결과로, 클릭 한 페이지를로드할지 또는 다른 것을로드 할지를 결정할 수 있습니다.
바로 페이지로드 인 WebNavigationTypeOther을 얻은 후 무시할 수 있습니다.

1

글쎄,이 방법에서는 값을 반환해야합니다. 이 URL을 수락할지 여부를 결정해야합니다. WebView가 원하지 않는 페이지로 이동하면 을 무시해야합니다.

그리고 웹보기가 다른 URL로 이동이 있습니다 [myWebView setMainFrameURL:otherUrlStr]

감사

2

을 당신은 단순히 [listener ignore] 메서드 호출을 추가해야합니다.

- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id)listener 
{ 
    [listener ignore]; 
    [[myWebView mainFrame] loadRequest:someRequest]; 
}