在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在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() } } |
请发表评论