簡體   English   中英

在動態UITableView中關閉iPhone鍵盤

[英]dismiss iPhone keyPad in dynamic UITableView

我有兩個部分的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];
}

然后我想在“完成”按鈕中退出FirstResponder

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

我沒有更多的想法如何從所有UITextFields退出鍵盤。 如果有人可以補救,我將不勝感激。

您對endEditing:的使用非常接近。 與其發送endEditing:到文本字段的實例, endEditing:嘗試將其發送到主視圖。 例如:

[self.view endEditing:YES];

endEditing:可以直接發送到文本字段實例,也可以發送到視圖,如果是后者,則任何正在編輯的文本字段(即您指定的視圖的子視圖)都將退出第一響應者。

從文檔:

使視圖(或其嵌入式文本字段之一)退出第一響應者狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM