在动态 UITableView 中关闭 iPhone 键盘

Posted

技术标签:

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

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

    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];

    使用标签来识别我正在编辑的文本字段。

 -(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 中退出键盘。如果有人有一些补救措施,我将不胜感激。

【问题讨论】:

这个答案可能对你有帮助:***.com/questions/15063798/… 【参考方案1】:

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

[self.view endEditing:YES];

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

来自文档:

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

【讨论】:

非常感谢。几乎在同一时间,我也在这篇文章中找到了答案link @user2111715 很高兴为您提供帮助!

以上是关于在动态 UITableView 中关闭 iPhone 键盘的主要内容,如果未能解决你的问题,请参考以下文章

在模拟器中关闭 iPhone

应用程序在模拟器中运行,但在我的 iPhone 中关闭

是否可以从 iPhone 应用程序中关闭漫游?

从 TableViewController 中关闭 ViewController

如何在 iOS 8 中关闭两个 UIViewControllers?

在 Rails 3 中关闭 CSRF 令牌