博客> 解决Swift中WebContainer 发request请求不到预想页面的问题
解决Swift中WebContainer 发request请求不到预想页面的问题
2017-09-21 23:17 评论:0 阅读:782 Hayder
swift image 闪退

开发中经常会遇到开发web app的需求,此种app 成本低、升级和维护都比较简单。这里主要解决发request得不到预想页面的一个可能解决方案,代码示例如下:

@IBOutlet  var searchBar: UISearchBar!
@IBOutlet  var webView: UIWebView!
@IBOutlet  var goBack: UIBarButtonItem!
@IBOutlet  var goForward: UIBarButtonItem!

@IBAction func goToBack(sender: UIBarButtonItem){
    webView.goBack()
}

@IBAction func goToForward(sender: UIBarButtonItem){

    webView.goForward()     
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {

    var str = searchBar.text
    if !(str?.hasPrefix("http://"))!{           
       str = "http://www.baidu.com/s?word=" + str!            
    }
    let subUrl = URL(string: str!)      
    let request = URLRequest(url: subUrl!)        
    webView.loadRequest(request)        
    self.view.endEditing(true)       
}

override func viewDidLoad() {
    super.viewDidLoad()        
    let myUrl = URL(string: "http://www.baidu.com")!        
    let request = URLRequest(url: myUrl)       
    webView.loadRequest(request)       
    searchBar.delegate = self
    webView.delegate = self      
}

func webViewDidStartLoad(_ webView: UIWebView) {
    print("")
}    

func webViewDidFinishLoad(_ webView: UIWebView) {
    print("")
}

func webView(_ webView: UIWebView, didFailLoadWithError error: NSError?) {
    print(error);
}

重点:直接创建工程写如上代码并得不到想要的结果,因为需要在info.plist中配置key-value

KEY:Allow Arbitrary Loads
VALUE:YES

如果不配置此值,则app只能request苹果的内部服务器,不能访问外部服务器。

webViewDidStartLoad和webViewDidFinishLoad在这里主要用来测试错误,判断app在运行什么时间段出现错误,最有用的是func webView(_ webView: UIWebView, didFailLoadWithError error: NSError?)将错误信息直接打印到console。

收藏
0
sina weixin mail 回到顶部