有时界面使用tableview布局, 其中有文本输入框的单元格,当键盘弹出后, 收回键盘很简单就是:
workcontent.resignFirstResponder()
1、 点击键盘return键返回需要viewcontroller实现委托
class ViewController: UIViewController,UITextFieldDelegate,UITextViewDelegate { //此处省略引用声明 //通过委托来实现放弃第一响应者 //UITextField Delegate Method func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } //通过委托来实现放弃第一响应者 //UITextView Delegate Method func textView(textView: UITextView,shouldChangeTextInRange range: NSRange,replacementText text: String) -> Bool { if (text == "\n") { textView.resignFirstResponder() return false } return true } }
但是按键到return无法让键盘消失,这是因为你的文本框没有添加委托。
添加委托的方法,右键文本框,把outlets下的+拉到file's owner(一个透视的正方体)上就可以了。
或者在加载事件中添加txtLength.delegate=self;
(添加委托的操作 来自:http://blog.csdn.net/peyfey/article/details/42423617)
2、点击空白收回键盘:
点击UITextField以外的区域,实际是点击了tableView,tableView捕获点击事件,可它不会传递该事件。怎么办呢?
网上有很多方法了,我找到一种简单可用的办法:addGestureRecognizer
class AddDayReportViewController: UITableViewController { @IBOutlet weak var workcontent: UITextView! override func viewDidLoad() { super.viewDidLoad() //注册点击事件 view.addGestureRecognizer(UITapGestureRecognizer(target: self,action: "handleTap:")) } func handleTap(sender: UITapGestureRecognizer) { if sender.state == .Ended { print("收回键盘") workcontent.resignFirstResponder() } sender.cancelsTouchesInView = false } }
亲测可用!!
UIGestureRecognizer类用于手势识别,它的子类有主要有六个分别是:
UITapGestureRecognizer(轻击一下)
UIPinchGestureRecognizer(两指控制的缩放)
UIRotationGestureRecognizer(旋转)
UISwipeGestureRecognizer(滑动,快速移动)
UIPanGestureRecognizer(拖移,慢慢移动)
UILongPressGestureRecognizer(长按)
原文链接:https://www.f2er.com/swift/325648.html