1.主要实现UIResponder类的两个方法:
(1) - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
(2) - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
正对拥护触摸屏幕的前后。
controller 控件一般继承语UIViewController,继承与UIResponder,因此程序的UIViewController可以使用这两个方法:
第一步。定义一个键盘隐藏的函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 - (void)hidenKeyboard:(id)sender 2 { 3 [sender resignFirstResponder]; 4 }
第二步。给UIView类添加查找当前Responder的Category
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @interface UIView(Responder) 2 @end 3 @implementation UIView(Responder) 4 - (UIView*)findFirstView 5 { 6 if ([self isFirstResponder]) { 7 return self; 8 } 9 for (UIView* subVIew in self.subviews) { 10 UIView* responder = [subVIew findFirstView]; 11 if (responder!=nil) { 12 return responder; 13 } 14 } 15 return nil; 16 } 17 18 @end
第三步。实现方法touchsBegan:withEvent:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { id sender = [self.view findFirstView]; [self hideKeyboard:sender]; }
原文出自:Source