我的 UI 搜索栏不起作用/向其他站点发送请求

Posted

技术标签:

【中文标题】我的 UI 搜索栏不起作用/向其他站点发送请求【英文标题】:My UIsearch bar does not work/send request to other sites 【发布时间】:2018-10-09 22:05:44 【问题描述】:

我还是新手,但我很困惑为什么我的搜索栏在我输入 url 地址时不起作用。我正在尝试制作一个视频下载器应用程序。

import UIKit
import AFNetworking
import Alamofire

class ViewController: UIViewController 

@IBOutlet var Webview: UIWebView!
@IBOutlet var SearchBar: UISearchBar!

override func viewDidLoad() 


    if let url = URL(string: "https://www.google.com")

        let requestObj = URLRequest(url: url)

        Webview.loadRequest(requestObj)
    
    SearchBar.text = "http://"



func searchBarSearchButtonClicked(searchbar: UISearchBar) 

    searchbar.resignFirstResponder()

    let text = SearchBar.text
    let url = NSURL(string: text!)
    let request:URLRequest = URLRequest(url: url! as URL)

    //let request = NSURLRequest(URL: url! as URL)

    Webview.loadRequest(request)




【问题讨论】:

另外请注意,您将强制解开 searchbar.text 并使用它来创建您的 url 请求。如果输入的 url 无效,它将导致异常。 UISearchBarDelegate 协议也是你需要遵守的,为了知道输入的文本何时发生变化,你可以使用此方法使用所需的搜索文本来创建一个 url 请求。 【参考方案1】:

添加UISearchBarDelegate协议方法以触发搜索栏协议​​方法;

class ViewController: UIViewController, UISearchBarDelegate, UIWebViewDelegate 
    override func viewDidLoad() 
        SearchBar.delegate = self
        webview.delegate = self // connect your webview in storyboard
    

    // MARK: -  UISearchView Delegates
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) 
    

    func searchBarSearchButtonClicked(searchbar: UISearchBar) 
        // call your function here
               let searchText = searchbar.text!
               let url = URL (string: searchText)
               let requestObj = URLRequest(url: url!)
               webView.loadRequest(requestObj)

        


【讨论】:

我是否对 func 搜索栏进行了任何更改?或者离开它 在您的 searchButtonClicked 操作中添加相同的代码 我希望现在它触发 searchBarSearchButtonClicked 功能,当你输入搜索按钮(从键盘)。

以上是关于我的 UI 搜索栏不起作用/向其他站点发送请求的主要内容,如果未能解决你的问题,请参考以下文章

TableView 上的搜索栏不起作用

离子搜索栏不起作用

粘性导航栏不起作用

覆盖操作栏不起作用

向 FCM 服务器发送 JSON 请求不起作用

透明导航栏不起作用(呈半透明蓝色)