在 UIWebview 中拥有自己的链接
own links in a UIWebview
我尝试在 UIWebView 中使用自己的操作创建自己的 link。为此,我喜欢阅读我自己的 link 的价值。
我设法做到了,但我希望有人对此进行审查,因为我不确定这是否是最佳做法? :-)(乱码?)
我用一些自己的 link 创建了自己的 HTML,例如 :
let myHTML:String="<a href=\"mylink:" + sLinkValue + "\">" + sDisplayText + "</a>";
我创建了一个 UIWebView 并显示 HTML:
myWebView.loadHTMLString(htmlString, baseURL: noBase);
使用委托 UIWebViewDelegate
单击 link 时调用我的委托:
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
let requestdescription:String = request.description;
println(requestdescription);
let Valueonly:String=getValueOnly(requestdescription);
println(Valueonly);
return true
}
在上面的代码中,我的 requestdescription
具有以下值:<NSMutableURLRequest: 0x7fad4ae21130> { URL: mylink:My%20own%20Value }
和 getValueOnly
剪切并粘贴请求描述 returns "My Own Value
"
我们应该这样做吗?
没有正式的 API 从 UIWebView
调用 obj-c 代码,您的方法是可行的。但是,有一些更通用的方法可以做到这一点:
- sending data as JSON
- javascript evaluation
我建议使用 request.URL.host 而不是使用辅助函数检索它并检查 request.URL.scheme isEqualToString "my link" 以确保它不是一些正常请求。顺便说一句,您可能不希望真正执行您的自定义方案的任何请求,因此 return false 可以避免这种情况。
我尝试在 UIWebView 中使用自己的操作创建自己的 link。为此,我喜欢阅读我自己的 link 的价值。 我设法做到了,但我希望有人对此进行审查,因为我不确定这是否是最佳做法? :-)(乱码?)
我用一些自己的 link 创建了自己的 HTML,例如 :
let myHTML:String="<a href=\"mylink:" + sLinkValue + "\">" + sDisplayText + "</a>";
我创建了一个 UIWebView 并显示 HTML:
myWebView.loadHTMLString(htmlString, baseURL: noBase);
使用委托 UIWebViewDelegate
单击 link 时调用我的委托:
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
let requestdescription:String = request.description;
println(requestdescription);
let Valueonly:String=getValueOnly(requestdescription);
println(Valueonly);
return true
}
在上面的代码中,我的 requestdescription
具有以下值:<NSMutableURLRequest: 0x7fad4ae21130> { URL: mylink:My%20own%20Value }
和 getValueOnly
剪切并粘贴请求描述 returns "My Own Value
"
我们应该这样做吗?
没有正式的 API 从 UIWebView
调用 obj-c 代码,您的方法是可行的。但是,有一些更通用的方法可以做到这一点:
- sending data as JSON
- javascript evaluation
我建议使用 request.URL.host 而不是使用辅助函数检索它并检查 request.URL.scheme isEqualToString "my link" 以确保它不是一些正常请求。顺便说一句,您可能不希望真正执行您的自定义方案的任何请求,因此 return false 可以避免这种情况。