【问题标题】:How to hide keyboard when UITextField is inside a TableView Cell当 UITextField 在 TableView 单元内时如何隐藏键盘
【发布时间】:2012-10-17 19:00:08
【问题描述】:

我得到的是一个 TableView,它使用 Prototype Cells 和一个提供数据源的数组 - 根据数据源,我使用某个 Table View Cell 标识符来构建单元格。 (如果我在这里做错了什么,请纠正我 - 我是 iOS 开发的新手,我正在尽可能地寻找最佳实践:)

无论如何,我在 Storyboard 中创建的表格视图单元之一有一个 UITextField。我在 Storyboard GUI 中设置了 Return Key 设置为“Done”并选中了“Auto-enable Return Key”。然后我进入我的控制器并使用以下代码:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
    [textField resignFirstResponder];
    NSLog(@"finished change...");
}

我还有一个链接到我的控制器的“Editing Did End”事件,该事件被编码为输出到 NSLog。

当我点击 Return 或 Done 时,日志会输出放置在 textFieldDidEndEditing 中的文本和我的事件函数。但是,当我选择表格单元格或开始移动滑块时,什么都没有发生 - 这意味着键盘仍在屏幕上。

有没有办法解决这个问题?

另外,虽然我一直在研究这个 Prototype Cells,但对于我需要的东西来说似乎相当费力。基本上我所需要的只是一个允许用户编辑一些设置的基本表,所以会有:

2 个可编辑的文本字段, 1个滑块, 2个开关

我将所有这些都放在了静态 UITableView 中,但它没有出现 - 这是由于对需要 UITableViewController 的此类表的限制。有没有解决的办法?

很抱歉,这篇文章太长了 - 我仍然在关注 iOS 开发,但到目前为止我很享受它:)

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone uitableview uitextfield


    【解决方案1】:

    我通常会随身携带一个 ivar 来跟踪。它让我可以根据各种事件方便地关闭键盘:

    @interface ViewController () {
       UITextField *_textFieldBeingEdited;
    } 
    @end
    
    - (void)textFieldDidBeginEditing:(UITextField *)textField {
       _textFieldBeingEdited = textField;
    }
    
    - (void)textFieldDidEndEditing:(UITextField *)textField{
       // no need to resignFirstResponder here.
       _textFieldBeingEdited = nil;
    }
    
    - (void)tableView:(UITableView *)tableView 
              didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
       if (_textFieldBeingEdited) {
         [_textFieldBeingEdited resignFirstResponder];
       }
       ...
    }
    

    【讨论】:

    • 谢谢你的款待。关于我的第二点,我是否能够以某种方式放置静态 TableView 而无需拥有 UITableViewController?
    • 使用UITableViewController有什么问题?
    • 当前使用的是 Utilities 模板 - 是否有可能以某种方式将 UITableViewController 集成到 FlipSide 上?我正在创建的应用程序非常基础,只需要一个主视图和一个反面视图来进行设置
    • 谢谢 - 虽然这看起来像是 xCode 4.5 的?我在 4.2 :( 如果这是唯一的解决方案,我想我需要继续使用原型 :)
    • Thx,在将文本字段委托设置为 self 并在我的班级中实现 uitextfielddelegate 后,它运行良好!
    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多