我去使用UIWebView來顯示動態內容,而不是本地使用UI元素。是否可以通過簡單地觸擊UIWebView中的鏈接觸發原生應用程序功能?例如:打一個鏈接,然後切換當前視圖?UIWebView能與應用程序進行交互(通信)嗎?
回答
是的,這是可能的。在你的HTML,你寫一個JS加載URL用假方案,如
window.location = "request_for_action://anything/that/is/a/valid/url/can/go/here";
然後,在你的iOS代碼,委託指定的網頁視圖,並在您的委託,辦理
webView:shouldLoadWithRequest:navigationType
喜歡的東西
if([request.URL.scheme isEqualToString: @"request_for_action"])
{
// parse your custom URL to extract parameter, use URL parts or query string as you like
return NO; // return NO, so webView won't actually try to load this fake request
}
-
只是順便說一句,你可以做其他的方式,讓iOS的合作de在你的html中調用一些JS代碼 使用
NSString* returnValue = [self.webView stringByEvaluatingJavaScriptFromString: "someJSFunction()"];
是的!當用戶按下鏈接時,您可以在網絡視圖的代理中聽到它,然後可以執行任何您想要的操作。強大的東西可以這樣完成。
網絡視圖的委託被髮送webView:shouldStartLoadWithRequest:navigationType:
。您可以分析發生的情況,並根據需要進行回覆。爲了防止網絡視圖試圖跟隨鏈接(畢竟這可能是完全假的),只需返回NO。
在這個來自TidBITS新聞應用程序的例子中,我在網頁上有一個鏈接,它使用了一個完全構成的play:
方案。我發現,在代表和玩法:
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)r
navigationType:(UIWebViewNavigationType)nt {
if ([r.URL.scheme isEqualToString: @"play"]) {
[self doPlay:nil];
return NO;
}
if (nt == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:r.URL];
return NO;
}
return YES;
}
落實UIWebViewDelegate
方法webView:shouldStartLoadWithRequest:navigationType:
。
根據需要處理navigationType和請求。
我已經設置了委託並實現了uiwebview委託方法。但是當我點擊一些uiwebview內容時,我的委託方法都沒有被調用。沒有回調。應該做什麼? – iPhoneDeveloper
@iPhoneDeveloper你應該發佈你自己的問題和所有相關的細節。 – rmaddy
- 1. UIWebView與SMS應用程序交互
- 2. 與小應用程序進行交互時,JTextArea變黑了嗎?
- 3. Windows應用程序可以與網頁進行交互嗎?
- 4. Apple Watch應用程序可以與Apple TV進行交互嗎?
- 5. 通過PHP與C#應用程序進行交互
- 6. 如何與交互式子進程進行通信
- 7. Windows窗體應用程序可以與Windows通用應用程序交互嗎?
- 8. Java應用程序與命令行進行交互
- 9. 如何以編程方式與應用程序進行交互
- 10. 小應用程序能否與servlet的實例進行通信
- 11. Java程序與網站進行交互
- 12. 使用Android應用程序與Windows應用程序進行交互
- 13. 使用python與Flash應用程序進行交互
- 14. Java應用程序在Web應用程序上與Flash進行交互
- 15. 如何與AIR應用程序的Windows應用程序進行交互?
- 16. 如何從android應用程序與web應用程序進行交互?
- 17. 交互式C#進程通信
- 18. 如何與外部應用程序的terraform進行交互?
- 19. 如何與其他應用程序進行交互?
- 20. 如何使Java應用程序與網站進行交互
- 21. 如何使API與我的應用程序進行交互
- 22. 從Flash CS3與Flex應用程序進行交互
- 23. 應用程序如何在Linux中與硬件進行交互?
- 24. ClickOnce應用程序是否可以與網頁進行交互
- 25. 如何與C++中的其他應用程序進行交互?
- 26. 在C中與外部應用程序進行交互#
- 27. 如何將android應用程序與樹莓派進行交互...?
- 28. 如何與其他應用程序進行交互
- 29. 你可以讓應用程序在後臺與instagram進行交互嗎?
- 30. ios應用程序與C#程序進行通信
它看起來正是我需要完成的。但我不知道我在哪裏放這個方法?順便說一句,謝謝你的描述性答案! –
你把它放在UIWebView的代表的任何地方! – matt
太棒了,這個工程! :)還有一個問題:爲什麼當我點擊預定義的url-scheme鏈接時,應用程序會重定向到Safari並嘗試打開它? –