经过一些研究后,我很确定这是UITapGestureRecognizer
tableView 导致了你的问题。如果您像我一样在单元格中拥有文本字段并使用UITapGestureRecognizer
要关闭键盘,这是我的解决方案:
鉴于您实施了UITextFieldDelegate
(就我而言,我有一个习惯UITableViewCell
称为 TextFieldCell),
声明一个UITapGestureRecognizer
作为财产:
@interface TextFieldCell : UITableViewCell <UITextFieldDelegate>
{
UITextField *theTextField;
UITapGestureRecognizer *gestureRecognizer;
}
@property (nonatomic,retain) UITextField *theTextField;
@property (nonatomic,retain) UITapGestureRecognizer *gestureRecognizer;
并在您的视图中初始化它:
self.gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyboard:)];
In the - (void)textFieldDidBeginEditing:(UITextField *)textField
方法、用途superView
移动到你的 tableView 并调用addGestureRecognizer
:
[self.superview.superview addGestureRecognizer:gestureRecognizer];
并且在- (void)textFieldDidEndEditing:(UITextField *)textField
,只需删除手势识别器:
[self.superview.superview removeGestureRecognizer:gestureRecognizer];
这将彻底解决问题。