2012-04-27 3 views
1

인터넷에서 콘텐츠를로드하는 WebView가 있습니다. '_blank'속성을 사용하는 링크가 있으면 아무 일도 발생하지 않습니다.WebView 열기 '_blank'링크

지금까지 WebView 대리인을 설정하려고했지만 등록 할 수 없으므로 NSLog를 다시 가져올 수 없으므로 잘못 사용해야합니다. 다음과 같이 코드는 다음과 같습니다

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [tmpView setUIDelegate:self]; 
} 

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request 
{ 
    NSLog(@"HEY THERE"); 
    return sender; 
} 

이상적으로 내가 원하는 것을, 링크가 웹보기를 클릭 할 때마다 링크가 항상 어디에서도, 그 웹보기에서 열립니다 것입니다.

이것이 가능합니까?

내가 완전히 난처한 상황에 빠진거야
webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener: 

그래서 난 진짜로 당신의 도움을 주셔서 감사합니다 것 : 나는 다른 방법을 찾았지만 연구를 통해

내가 원하는 결과를 얻기 위해 그들을 사용하는 방법을 모른다.

미리 감사드립니다.

+0

이렇게하면 도움이 될 수 있습니다. http://conecode.com/news/2011/05/ios-tutorial-creating-a-web-view-uiwebview/ – hanumanDev

+0

@hanumanDev. iOS는'UIWebView'이고 질문은 Mac의 WebView에 관한 것입니다. –

답변

3

, 당신은 당신의 위임이 작업을 수행해야합니다

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request 
{ 
    [[sender mainFrame] loadRequest:request]; 
    return sender; 
} 
+0

이것이 정확히 내가 원하는 것인데, 나는 단지 대의원을 연결하는 방법을 모른다. WebView에서 FrameLoadDelegate의 파일 소유자로 화살표를 그립니다. – Cristian

+0

내가 물어 보는 이유는이 방법이 실행되지 않는 것 같기 때문입니까? 다시 한 번 감사드립니다 Rob – Cristian

+1

그 방법은'WebUIDelegate' 프로토콜의 일부이므로 메서드를 구현하는 객체를'WebView'의'UIDelegate'로 할당해야합니다. 예제 코드에서는 App Delegate에서 구현 했으므로'WebView'의 'UIDelegate' 콘센트를 AppDelegate 객체에 연결합니다. –

1

이 블로그 게시물은 JavaScript를 사용하여 기본적으로 링크에서 대상 속성을 제거하는 솔루션을 제공합니다. 새 창을 열 수 있지만, 당신의 현재 WebView 객체의 요청을 열지 않으려면

http://blog.mikeweller.com/2009/06/uiwebview-doesnt-open-targetblank-links.html

+0

크롬에서 테스트했을 때 실제로 모든 악성 속성이 제거되었지만 코드가 내 WebView에 아무런 영향을 미치지 않는 것 같습니까? WebViewProgressFinished 메서드에 넣었지만 링크를 클릭 할 수 없습니다? – Cristian

+0

어쨌든 덕분에 좋은 생각이었습니다! – Cristian

0

당신이 할 수있는 전화

(WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request 

당신은 또한

(void)webView:(WebView *)sender decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id<WebPolicyDecisionListener>)listener 

당신이 무엇을 달성하고자 할 구현할 수 있습니다.