Swift 如何在浏览器项目中显示用户google搜索引擎结果
我正在用swift为iPhone、iPad实现一个带有Swift 如何在浏览器项目中显示用户google搜索引擎结果,swift,uiwebview,Swift,Uiwebview,我正在用swift为iPhone、iPad实现一个带有UIWebView的浏览器。所有这些都很好,但问题是,当用户键入错误或未完成他们喜爱的网站的URL时,它似乎崩溃了,没有呈现任何内容。所以我想做的是,如果浏览器找不到所请求的页面,那么它会自动在谷歌搜索引擎上搜索这个词,并在浏览器中显示结果。 这是我的代码,如果需要的话。 谢谢你的帮助 func textFieldShouldReturn(_ textField: UITextField) -> Bool { //let u
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
}
您可以添加一个检查来验证您的url字符串是否包含
www
,如果不包含,您可以使用文本设置“”url:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
guard let urlString = urlTextField.text else { return true }
if urlString.starts(with: "http://") || urlString.starts(with: "https://") {
loadUrl(urlString)
} else if urlString.contains(“www”) {
loadUrl("http://\(urlString)")
} else {
searchTextOnGoogle(urlString)
}
textField.resignFirstResponder()
//...
return true
}
func loadUrl(_ urlString: String) {
guard let url = URL(string: urlString) else { return }
let urlRequest = URLRequest(url: url)
webView.load(urlRequest)
}
func searchTextOnGoogle(_ text: String) {
// check if text contains more then one word separated by space
let textComponents = text.components(separatedBy: " ")
// we replace space with plus to validate the string for the search url
let searchString = textComponents.joined(separator: "+")
guard let url = URL(string: "https://www.google.com/search?q=" + searchString) else { return }
let urlRequest = URLRequest(url: url)
webView.load(urlRequest)
}
非常感谢,看起来很有帮助。但是上面的代码在这些行中有两个错误
guard let urlString=urlTextField.text else{return}。非void函数应返回值
和func loadUrl(urlString){.Parameter需要显式类型
。在这些代码中可以帮我吗?@nedaDerakhshesh对不起,我的分心;)我已经编辑了我的答案。@Francesco DeliroThanks@FrancescoDeliro非常感谢。它解决了,工作完全正常。谢谢1000..000times@user2296278也非常感谢您以前的帮助和帮助代码。