2013-05-17 47 views
1

因此,我正在編寫我的第一個應用程序,並且有一個關於在UIWebView中阻止其他域的快速問題。我想限制導航到我的網站,而我的合作伙伴網站只。所以,如果在我的網站上碰巧有鏈接到Google的鏈接,我想要彈出消息併發出並說「你不能去那裏!」或者其他的東西。我不知道如何去做這件事。我以前從來沒有玩過UIWebView,而且對於編程來說,這些都很新穎。 任何幫助都非常感謝,謝謝!iOS:阻止UIWebView中的其他域

回答

7
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *host = [request.URL host]; 
    if ([host isEqualToString:"oralb.com"] || [host isEqualToString:"other.com"]) { 
     // Add any of your own domains in the above line 
     return YES; 
    } 

    return NO; 
} 
+1

BaseURL ==「oralb.com」不是定義字符串或比較字符串的有效方法。你應該使用比較:或isEqualToString:或hasPrefix: – Wain

+0

@Wain - 謝謝。錯過了。 – bbarnhart

+0

在主機設置完成後立即添加斷點,然後逐步完成。確保主機是正確的價值。您可能需要使用除主機以外的其他方法。 [Link](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/c/data/NSURLIsExcludedFromBackupKey) – bbarnhart

2

您需要讓您的控制器類成爲Web視圖的代表。然後實現在控制器此方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

在這種方法中,你可以檢查request,看看它URL是可以接受的。如果是,return YES,如果沒有,則顯示您的警報和return NO

要測試域名,您可以從requestURL請求host

+0

太棒了,謝謝你Wain!此外,這仍然允許我瀏覽我的整個網站或只有主頁?對於初學者的問題感到抱歉,非常感謝! – John

+0

如果您僅驗證主機,則該主機上的所有頁面都將可用。你有整個URL路徑,所以你可以做更具體的過濾,如果你需要。 – Wain

+0

非常感謝! – John