我有一個小的嵌入式UIWebView爲我的應用程序的部分。當用戶在那裏點擊一個鏈接時,鏈接將在該嵌入式UIWebView中打開,該UIWebView當然沒有導航控件,並且不是全屏。我不喜歡那樣。我可以強迫它打開與Safari的鏈接嗎?如何使用Safari應用程序在UIWebView中啓動鏈接?
0
A
回答
2
您可以實施UIWebViewDelegate協議的shouldStartLoadWithRequest
方法來攔截鏈接點擊。在該方法內部,您可以使用UIApplication的openURL
方法來使URL在相應的應用程序(即用於HTTP/HTTPS的Safari)中打開。
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([url isEqual:YOUR_HOME_URL_CONTSTANT])
return YES;
[[UIApplication sharedApplication] openURL:url];
return NO;
}
0
您應該實現UIWebViewDelegate的shouldStartLoadWithRequest
。在這裏你可以看到UIWebView何時開始加載一個URL。然後,您可以處理應該在此webView中加載的內容以及應由Safari加載的內容。
我的代碼如下所示:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
if (inType != UIWebViewNavigationTypeLinkClicked)
{
//This was not a clicked link, so is probably the initial load
//and should be loaded in the UIWebView
return YES;
}
//This was a clicked link, so load using Safari
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
這裏我使用UIWebViewNavigationType
,以確定它是否是一個鏈接點擊,並適當響應。
相關問題
- 1. 。如何從Safari中的鏈接啓動應用程序?
- 2. 如何在Safari中啓用從深層鏈接啓動應用程序iOS
- 3. 從UIWebView *啓動移動Safari,無需修改應用程序源?
- 4. 何時在iPhone應用程序中使用UIWebView與Safari?
- 5. 當我的應用程序未安裝時,UIWebView中的iOS通用鏈接將啓動Safari?
- 6. 如何從Android中的短信鏈接啓動應用程序?
- 7. 如何在iOS上的本地Facebook應用程序中打開Safari中的移動Web應用程序鏈接?
- 8. 如何從Gmail應用程序打開Safari中的鏈接?
- 9. 如何在iPhone應用程序的UIWebView中啓用「全選」?
- 10. 在Safari中的UIWebView中打開鏈接
- 11. 如何從iPad應用程序中啓動Safari瀏覽器?
- 12. 如何從Safari中啓動RSS閱讀器應用程序?
- 13. 如何禁用iPhone Safari以啓動地圖應用程序
- 14. 如何鏈接URL以啓動我的Android應用程序?
- 15. 如何從鏈接啓動我的Android/IOS應用程序
- 16. 如何從網頁上的鏈接啓動應用程序mac
- 17. 如何通過瀏覽器鏈接啓動Android應用程序?
- 18. 如何從我的移動應用程序中打開Safari中的鏈接?
- 19. 使用深度鏈接啓動Android應用程序
- 20. UIWebView鏈接在Safari中打開
- 21. 從UIWebView在Safari中打開鏈接
- 22. 在UIWebview中打開鏈接而不是UIShared應用程序
- 23. 外部Safari鏈接或UIWebview?
- 24. iPhone Safari鏈接到maps.google.com而不啓動默認的地圖應用程序
- 25. 如何在UIWebView中使用Apple(在應用程序中購買)?
- 26. 如何使用Selenium啓動Safari Web驅動程序?
- 27. 強制iOS應用程序在safari中打開外部鏈接
- 28. 在Facebook應用程序如何鏈接與應用程序鏈接關聯
- 29. UIWebView,啓用觸摸保存圖像,如在移動Safari中
- 30. 如何使用自動啓動在系統啓動時啓動應用程序?
當我實現這個時,UIWebView甚至不會啓動本地內容。它仍然是空的......奇怪的事情。什麼會導致這種情況?這是否也會影響[v loadRequest:request]方法? – 2010-10-19 21:31:31
在此代碼中,您需要檢查網址以查看它是否應該在Safari中加載。例如,也許你想要以file開頭的所有內容:要加載到Web視圖中,在這種情況下,此方法需要返回YES。我的猜測是openURL不會打開一個文件url,並且由於NO返回,webview也不會加載它。 – Nimrod 2010-10-19 21:34:21
是的,在我提供的代碼片段中,所有加載請求都被推送到外部應用程序。如果您想以不同方式加載特定內容,則可以通過任何方式檢查URL的屬性,以確定是本地加載還是遠程加載。返回值BOOL指定webView是否應該繼續並嘗試加載內容本身。我會用一個天真的實現來更新這個例子。 – codelark 2010-10-19 22:20:26