今天想自己做键盘回收点击空白处IQKeyboardManager 类库觉得不好控制,所以自己写写, 找了下网上没找到, 想想就翻了下IQkeyboardManager得源码,找到了方法,所以写篇日记记录下
1 2 3 
  |   NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.textFieldViewDidBeginEditing(_:)), name: UITextViewTextDidBeginEditingNotification, object: nil)  NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.textFieldViewDidEndEditing(_:)), name: UITextViewTextDidEndEditingNotification, object: nil) 
  | 
 
有键盘开始的时候, 加入tap , 消失的时候取消, 重点其实是window 当时自己没想到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 
  | func winTap(tap:UIGestureRecognizer)  {     self.inputeTextView.resignFirstResponder() } func textFieldViewDidBeginEditing(note:NSNotification)  {     tap = UITapGestureRecognizer(target: self, action: #selector(winTap(_:)))     tap.cancelsTouchesInView = false     tap.enabled = true     tap.delegate = self     self.inputeTextView.window?.addGestureRecognizer(tap) } func textFieldViewDidEndEditing(note:NSNotification)  {          self.inputeTextView.removeGestureRecognizer(tap) } 
  | 
 
注 ,其他的如textFiled 同理换个消息而已
代理函数去区分点击的是什么 是响应什么动作
1 2 3 4 5 6 7 8 
  | func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool{     if ((touch.view?.isKindOfClass(UIControl.classForCoder())) == true  || (touch.view?.isKindOfClass(UINavigationBar.classForCoder())) == true ){         //oc 键盘类库([[touch view] isKindOfClass:[UIControl class]] || [[touch view] isKindOfClass:[UINavigationBar class]]) ? NO : YES;        return false     }     return true } 
  |