swift开发笔记12-点击屏幕 收回键盘

前端之家收集整理的这篇文章主要介绍了swift开发笔记12-点击屏幕 收回键盘前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有时界面使用tableview布局, 其中有文本输入框的单元格,当键盘弹出后, 收回键盘很简单就是:

workcontent.resignFirstResponder()


通常是textfield和textview点击键盘return(换行)键时收回,并且也能点击表格空白处收回

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

猜你在找的Swift相关文章