iOS 取消键盘第一响应

方法一

view.endEditing(true) 
textfiled.resignFirstResponder()

endEditing 方法是取消整个view的编辑状态
textfiled.resignFirstResponder 是取消textfiled 或者searchbar等控件的第一响应
配合使用touchbega方法

 override func touchesBegan(_ touches: Set, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        view.endEditing(true)
    }

注意UIScrollView UITableView UICollectionView等Scroll系列的会拦截touchBegan的方法,所以要添加分类或者扩展将touch事件传给父视图(具体的见响应链原理)所以,这边要做的是将拦截的传递事件传给上一级。写一下swift的extension,OC的分类就不写了。

extension UITableView{
    open override func touchesBegan(_ touches: Set, with event: UIEvent?) {
        self.next?.touchesBegan(touches, with: event)
    }
}

方法二

不说了万恶的第三方:IQKeyboardManager
直接贴方法:

//viewdidload里面添加
IQKeyboardManager.shared.shouldResignOnTouchOutside = true

就这么完事了

你可能感兴趣的:(iOS 取消键盘第一响应)