IOS Swift UITableViewcontroller实现点击空白处隐藏键盘

时间:2022-07-13 10:22:21

在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()

    }