我正在用 swift 为 iPhone、iPad 实现一个浏览器UIWebView
。一切正常,但问题是,当用户输入错误或不完整的他们喜欢的网站的 URL 时,它似乎崩溃了并且不呈现任何内容。因此,如果浏览器无法找到所请求的页面,我想以某种方式执行此操作,然后它会自动在谷歌搜索引擎上搜索该确切单词并在浏览器中显示结果。如果需要的话,这是我这部分的代码。感谢任何帮助
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//let urlString:String = urlTextField.text!
var urlString: String = urlTextField.text!
if !urlString.starts(with: "http://") && !urlString.starts(with: "https://") {
urlString = "http://\(urlString)"
}
let url:URL = URL(string: urlString)!
let urlRequest:URLRequest = URLRequest(url: url)
webView.load(urlRequest)
textField.resignFirstResponder()
let path: String = url.path
let ext: String = URL(fileURLWithPath: path ).pathExtension
print(ext as Any)
return true
}
Run Code Online (Sandbox Code Playgroud)
您可以添加一个检查来验证您的 urlString 是否包含www
,如果不包含,您可以使用您的文本设置“ https://www.google.com/search?q= ” url:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {\n\n guard let urlString = urlTextField.text else { return true }\n\n if urlString.starts(with: "http://") || urlString.starts(with: "https://") {\n loadUrl(urlString)\n } else if urlString.contains(\xe2\x80\x9cwww\xe2\x80\x9d) {\n loadUrl("http://\\(urlString)") \n } else { \n searchTextOnGoogle(urlString)\n }\n\n textField.resignFirstResponder()\n //...\n\n return true\n} \n\nfunc loadUrl(_ urlString: String) {\n guard let url = URL(string: urlString) else { return }\n\n let urlRequest = URLRequest(url: url) \n webView.load(urlRequest)\n}\n\nfunc searchTextOnGoogle(_ text: String) {\n // check if text contains more then one word separated by space \n let textComponents = text.components(separatedBy: " ") \n\n // we replace space with plus to validate the string for the search url\n let searchString = textComponents.joined(separator: "+") \n\n guard let url = URL(string: "https://www.google.com/search?q=" + searchString) else { return }\n\n let urlRequest = URLRequest(url: url) \n webView.load(urlRequest)\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
1038 次 |
最近记录: |