在动态UITableView中解除iPhone keyPad

时间:2013-02-26 15:33:25

标签: iphone ios objective-c

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

    表格视图中的
  1. UITapGestureRecognizer
  2. 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. 使用标签识别我正在编辑的文本字段。
    2.  -(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按钮

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

      我没有更多关于如何从所有UITextFields重新签名键盘的想法。如果有人有一些补救措施,我将非常感激。

1 个答案:

答案 0 :(得分:1)

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

[self.view endEditing:YES];

endEditing:可以直接发送到文本字段实例,也可以发送到视图,如果是后者,任何正在编辑的文本字段都是您指定的视图的子视图,将重新签名第一个响应者。 / p>

来自文档:

  

使视图(或其中一个嵌入的文本字段)重新签名   第一响应者状态