IOS Swift UITableViewcontroller實現點擊空白處隱藏鍵盤


在ios開發中,為了方便,我們經常使用UITableViewcontroller,比如搜索界面為了方便可能更多的使用UITableViewcontroller,那么問題就來了,當我點擊搜索框的時候會彈出一個鍵盤,我們需要點擊空白處就隱藏鍵盤,這時候大家可能想到的事在UITableViewcontroller中重寫touchesBegan方法,但是發現這個方法並沒有響應,我猜想可能是被屏蔽了,那我們該怎么做呢?下面我說一下實現思路:

1.自定義一個類繼承UITableView然后重新touchesBegan然后寫一個代理提供一個隱藏鍵盤的方法,代碼如下: 

import UIKit

//搜索時點擊空白處隱藏鍵盤

protocol SearchTableViewDelegate { 

    func hideKeyBoard()

 }

class SearchTableView: UITableView {

 

    var mDelegate:SearchTableViewDelegate!

    required init?(coder aDecoder: NSCoder) {

     

        super.init(coder: aDecoder)

    }

    

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

      

        if mDelegate != nil{

        mDelegate.hideKeyBoard()

        }

    }

}

2.調用

注意:在調用之前一定要將UITableViewController中的UITableView設置成自己定義的那個UITableView否則不會有效果切記

import UIKit

//搜索

class SearchTableViewController: UITableViewController,SearchTableViewDelegate{

 

    @IBOutlet var mSearchTableView: SearchTableView!

    var searchBar:UISearchBar!

    override func viewDidLoad() {

        super.viewDidLoad()

        mSearchTableView.mDelegate=self

        

        addSearchBar()

       

    }

 

    //在導航欄添加搜索框

    func addSearchBar()  {

         self.searchBar = UISearchBar(frame:CGRect(x:0,y:0,width:self.view.bounds.width,height:44))

         self.navigationItem.titleView=searchBar

    }

    

    //點擊屏幕空白處退出鍵盤

    

    func hideKeyBoard() {

      

        self.searchBar.resignFirstResponder()

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM