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

}

IOS Swift UITableViewcontroller实现点击空白处隐藏键盘的更多相关文章

  1. IOS 点击空白处隐藏键盘的几种方法

    IOS 点击空白处隐藏键盘的几种方法     IOS7 点击空白处隐藏键盘的几种方法   IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能 ...

  2. IOS7 点击空白处隐藏键盘的几种方法

    IOS7 点击空白处隐藏键盘的几种方法   iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们 ...

  3. 【Flutter 实战】全局点击空白处隐藏键盘

    老孟导读:为什么要实现点击空白处隐藏键盘?因为这是 iOS 平台的默认行为,Android 平台由于其弹出的键盘右上角默认带有关闭键盘的按钮,所以点击空白处不会隐藏键盘. 对于单个页面来说,通过为 T ...

  4. react 点击空白处隐藏弹出层

    点击空白处隐藏弹出层的原理是:在 document 上绑定事件来隐藏弹出层,这样点击任何元素的时候都会冒泡到 document 上,都会执行隐藏弹出层的功能.然后我们在不需要隐藏弹出层的元素上阻止冒泡 ...

  5. jquery实现点击按钮弹出层和点击空白处隐藏层

    昨天做项目遇到一个问题,和大家分享下,jquery实现点击按钮弹出层和点击空白处隐藏层的问题 if($('.autoBtn').length){                $('.autoBtn' ...

  6. Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)

    一.需求触发场景: 项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需 ...

  7. Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)

    在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide. 针对此需求,整理了三种实现方式,大家按实际情况选择. 当然,我们做项目肯定会用到 UI 框架, ...

  8. iOS Swift 实现图片点击缩放回弹动画

    效果就是下面这个样子: 思路借鉴的是MZTimerLabel,有想过做一个自定义的ImageView,但那样的话之前view用必须要改代码,索性就按照MZTimerLabel这个方式实现,简单易用,从 ...

  9. IOS swift实现密码的显示与隐藏切换

    最近做项目遇到一个需要做密码的显示与隐藏功能,简单从功能上讲是比较简单的,但是,ios有个恶心的BUG,就是在切换显示密码后再隐藏密码时输入就被清空了,这个非常不友好,为了解决这个问题,我在网上找了相 ...

随机推荐

  1. Mybatis异常_04_mapper.xml中不能使用小于号<、大于号>

    一.解决方法: 1.< 2.<![CDATA[ < ]]> 将小于号替换为上述代码即可. 二.参考资料 1.mybatis配置中sql莫名其妙报错,多半是条件中小于符号捣的鬼

  2. Mysql总结_02_mysql数据库忘记密码时如何修改

    1.从cmd进入mysql的bin下,输入命令  mysqld --skip-grant-tables  回车 注:(输入命令前,确保在任务管理器中已没有mysql的进程在运行,可输入命令:net s ...

  3. ACM学习历程—HDU1041 Computer Transformation(递推 && 大数)

    Description A sequence consisting of one digit, the number 1 is initially written into a computer. A ...

  4. ACM学习历程—ZOJ 3868 GCD Expectation(莫比乌斯 || 容斥原理)

    Description Edward has a set of n integers {a1, a2,...,an}. He randomly picks a nonempty subset {x1, ...

  5. bzoj 2716 [Violet 3]天使玩偶——KDtree

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2716 第三道KDtree!仍旧是模板.还有CDQ分治做法,见下面. 数组迷之开大?(开6e5 ...

  6. ssh免密码登录配置方法,(图示加命令)

    首先,说明一下我们要做的是,serverA 服务器的 usera 用户免密码登录 serverB 服务器的 userb用户. 我们先使用usera 登录 serverA 服务器 [root@serve ...

  7. mysql du-master配置

    db-server1 my.cnf log_bin = mysql-binbinlog_format = mixedserver_id = 1 read-only = 0#binlog-do-db = ...

  8. Ruby中的%表示法

     %{String}  用于创建一个使用双引号括起来的字符串,这个表示法与%Q{String}完全一样 result = %{hello} puts "result is: #{result ...

  9. maven---工程建立及目录添加--

    刚开始建立maven工程目录1: 添加web能力: 选中工程鼠标右击点MyEclipse添加web能力: 然后: 关键点:remove掉Excluded:** 添加javaEE5库 确保web: 建p ...

  10. HTTP返回码中301与302的区别

    一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved). 302 ...