触摸UITableView时正确的resignFirstResponder方法?

时间:2010-05-29 18:18:49

标签: iphone uitableview uitextfield

我有一个非常简单的UITableView,其单元格包含UITextField,我需要能够调用resignFirstResponder来隐藏键盘,只要用户触摸UITableView之外的其中一个细胞

我已阅读this question/answer但这似乎是实现这一目标的一种非常基本的方法。通过将UITableView转换为UIControl,我已经了解了一种方法,以便您可以连接TouchDown事件。

有人知道实现此功能的标准或首选方法吗?

2 个答案:

答案 0 :(得分:1)

这非常有趣,但不是很难,因为你必须使用UITapGestureRecognizer ......

in .h

IBOutlet UITextField *txtField;
IBOutlet UITableView *tableview;

in .m

-(void)viewDidLoad
{

UITapGestureRecognizer *tapgesture=[[UITapGestureRecognizer alloc]initWithTarget:self 
action:@selector(tableClicked)];
[tableview addGestureRecognizer:tapgesture];

[super viewDidLoad];

}

-(void)tableClicked
{

     [txtField resignFirstResponder];

}

休会这个示例代码,我认为它有效...谢谢..

答案 1 :(得分:1)

点击手势识别器将检测点击,但我有时发现它干扰了正常的行选择机制。我想我已经在answer to this question.中找到了一个很好的解决方案。我已经发布了一些UIView子类的示例代码,您将其设置为文本字段的accessoryInputView。然后,如果您选择文本字段,它会自动添加点按识别器,然后在您完成后自动删除它。