我有一個包含html格式文本的UIWebView。在文中有些詞是鏈接。點擊時,他們應該將另一個視圖推入堆棧。我應該如何編寫html鏈接和相應的objective-c代碼來實現這個功能?如何在UIWebView中使用HTML鏈接將視圖推送到堆棧?
1
A
回答
3
建立委託的UIWebView,那麼你可以處理鏈接的動作點:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if (inType == UIWebViewNavigationTypeLinkClicked) {
[self.navigationController pushViewController:vc animated:YES];
return NO;
}
return YES;
}
+0
我嘗試了這種解決方案,但是我無法啓動shouldStartLoadWithRequest。我以編程方式創建UIWebView並將其添加到表格單元格中。在ViewController.h文件中,我設置了這樣的代理: @interface ViewController:UIViewController
+0
@ user1279526,'myWebView.delegate = self;' – beryllium 2012-04-04 19:18:19
0
斯威夫特3:全UIWebView的例子來推棧視圖和HTML點擊後打開包另一個HTML文件鏈接例如<a href="imprint.html">imprint</a>
class WebViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
var filename:String?
override func viewDidLoad() {
super.viewDidLoad()
guard filename != nil else {
fatalError("filename not defined")
}
view.backgroundColor = UIColor.white
webView.isOpaque = false;
webView.delegate = self
webView.backgroundColor = UIColor.clear
//remove file extension first
filename = filename!.replace(".html", replacement: "")
let localfilePath = Bundle.main.url(forResource: filename, withExtension: "html")
let myRequest = NSURLRequest(url: localfilePath!)
webView.loadRequest(myRequest as URLRequest)
}
...
}
extension WebViewController: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
//set view title from html document
let pageTitle = webView.stringByEvaluatingJavaScript(from: "document.title")
navigationItem.title = pageTitle
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == .linkClicked,
let urlStr = request.url?.absoluteString,
!urlStr.contains("http://"),
let filename = request.url?.lastPathComponent, //e.g. imprint.html
let vc = storyboard?.instantiateViewController(withIdentifier: "WebView") as? WebViewController{
vc.filename = filename
self.navigationController?.pushViewController(vc, animated: true)
return false
}
return true
}
}
相關問題
- 1. iOS在tabbar應用程序中將視圖推入堆棧
- 2. 在導航堆棧上推視圖
- 3. 如何將操作推送到Excel撤消堆棧?
- 4. 如何溢出堆棧而不推送新的堆棧幀?
- 5. 將UIWebView推送到UIViewController
- 6. 如何在單獨鏈接列表中使用堆棧
- 7. 將結構中的數據推送到堆棧中C
- 8. 不能推視圖入堆棧
- 9. UIWebView不會滾動堆棧視圖,子視圖
- 10. iOS Swift:從自定義表格視圖中將視圖推送到堆棧單元格
- 11. 如何在MIPS中推送和彈出堆棧中的地址
- 12. 如何將對象推入堆棧?
- 13. 如何將scala.xml.Null推入堆棧[MetaData]?
- 14. 使用鏈接列表實現堆棧
- 15. 如何在平均堆棧項目中推送文檔?
- 16. 如何使用Delicious API將鏈接添加到堆棧/軟件包?
- 17. 如何將用swig包裝的C++類的實例推送到lua堆棧上?
- 18. 如何推視圖控制器到導航堆棧後,在執行popToRootViewController
- 19. 使用html鏈接將值輸入到django視圖
- 20. 將整數推入堆棧
- 21. 在推送到堆棧的新viewController中更新NSMutableArray
- 22. 如何將swipe-to-delete添加到堆棧視圖
- 23. 鏈接列表堆棧丟失堆棧上的最後一項推出
- 24. Xcode:視圖控制器何時添加到視圖堆棧中?
- 25. 堆棧視圖在表視圖細胞
- 26. 堆棧使用鏈表
- 27. 堆棧視圖隱藏了視圖,堆積在其中
- 28. iOS - UITableView將URL推送到不同視圖控制器中的UIWebView
- 29. 如何將2個以上的視圖添加到視圖堆棧?
- 30. 如何發送堆棧跟蹤到log4j?
http://www.theappcodeblog.com/2011/02/26/uiwebview-tutorial-link-to-an-ibaction/ OR http://inchoo.net/mobile-development/iphone-開發/如何覆蓋-uiwebview-links-request-action-with-your-own-custom-method/ – 2012-04-03 18:23:06