【问题标题】:dismiss iPhone keyPad in dynamic UITableView在动态 UITableView 中关闭 iPhone 键盘
【发布时间】:2013-02-26 15:33:24
【问题描述】:

我有UITableView 有两个部分。第一部分是带有步进器的静态行,可创建第二部分的单元格。第二部分的每个单元格都包含带有键盘的UITextField。我可以使用UITapGestureRecognizer 或键盘中的附加完成按钮关闭键盘,但它仅适用于最后一个单元格。 我尝试了以下方法:

  1. UITapGestureRecognizer 在表格视图中

在我的ViewDidLoad 我输入:

   UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard)];
    [self.tableView addGestureRecognizer:gestureRecognizer];

然后

-(void)hideKeyboard{
    [self.tableView resignFirstResponder];
}

-(void)hideKeyboard:(UITapGestureRecognizer*)sender{
    [self.cellText endEditing:YES];
}
  1. 使用标签来识别我正在编辑的文本字段。

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath I added
    [cellText addTarget:self action:@selector(myNumberValueBeginEditing:) forControlEvents:UIControlEventEditingDidBegin];

-(void)myNumberValueBeginEditing:(UITextField *)sender
{
    int row = [sender.superview.superview tag];
    UITextField *cellTemp = (UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row];
    cellTemp.delegate = self;
    [cellTemp becomeFirstResponder];
}

然后我尝试在 DONE 按钮中辞去FirstResponder

-(IBAction)doneButton:(UITextField *)sender {
NSLog(@"doneButton");
    int row = [sender.superview.superview tag];
    [(UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row] resignFirstResponder];
}

我不知道如何从所有UITextFields 中退出键盘。如果有人有一些补救措施,我将不胜感激。

【问题讨论】:

标签: iphone ios objective-c


【解决方案1】:

您对endEditing: 的使用非常接近。不要将endEditing: 发送到您的文本字段的实例,而是尝试将其发送到您的主视图。例如:

[self.view endEditing:YES];

endEditing: 可以直接发送到文本字段实例或视图,在后者的情况下,作为您指定视图的子视图的任何正在编辑的文本字段都将退出第一响应者。

来自文档:

导致视图(或其嵌入的文本字段之一)退出 第一响应者状态

【讨论】:

  • 非常感谢。几乎在同一时间,我也在这篇文章中找到了答案link
  • @user2111715 很高兴为您提供帮助!
猜你喜欢
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多