场景:当你封装了一个控件类,这个类中封装进去了UITextField,这时获取不到textField属性,怎么办。
我以前都是这么写:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.textField resignFirstResponder];
}当把UITextField封装进去时,如果把属性声明到.m文件中,你从外边拿不到属性,这个办法就不好使了。。。
其实有一个更好的实现方法,可以说是简单粗暴:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}这个方法不仅可以解决在封装时拿不到textField属性的问题,还能简化代码,如果有多个textField,上面的方法就要添加多个resignFirstResponder方法,下面的方法,永远只要一行代码就能搞定。
本文介绍了一种在封装含有UITextField的自定义控件时,如何优雅地处理触摸开始事件以关闭键盘的方法。通过使用简单的[self.view endEditing:YES]替代针对每个textField的resignFirstResponder调用,不仅解决了访问封装内部textField的问题,还简化了代码。

被折叠的 条评论
为什么被折叠?



