【问题标题】:return key pressed inside uitableviewcell swift在uitableviewcell swift中按下返回键
【发布时间】:2016-10-16 07:36:57
【问题描述】:

我的表格视图的每个单元格中都有一个文本字段。当用户按下返回键时,我想退出键盘。我试过了:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    textField.resignFirstResponder()

    return true
}

但它不起作用,我似乎无法找到引用表格视图单元格内的文本字段的方法。请帮忙,谢谢!

【问题讨论】:

    标签: swift uitableview textfield


    【解决方案1】:

    我假设您已经在单元格类中创建了 IBOutlets 的文本字段。
    UITableViewcellForRow 数据源方法中将您的文本字段委托给自己

    cell.yourTextField.delegate = self
    

    【讨论】:

      【解决方案2】:

      你可以给委托表单故事板。

      【讨论】:

        【解决方案3】:

        您应该让您的自定义UITableViewCell 类确认到UITextFieldDelegate

        class TableViewCell: UITableViewCell, UITextFieldDelegate {
            // ...
        }
        

        awakeFromNib 中,您应该将文本字段委托给单元类:

        override func awakeFromNib() {
            // ...
        
            textField.delegate = self
        
            // ...
        }
        

        最后,实现textFieldShouldReturn

        func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        
            textField.resignFirstResponder()
        
            return true
        }
        

        希望有所帮助。

        【讨论】:

        • 这是错误的。如果在awakeFromNib 中实现,它将不是ViewController 的一部分,而只是自定义单元格的一部分,文本字段在表格中。它应该在cellForRow
        • @RajanMaheshwari 从架构的角度来看,让 Controller 层 来处理 cell 的组件并不是一个好主意,这强调了 “Massive View Controllers” 理论。
        • 兄弟,和self有关。你不能让 self 成为 customcell 类。如果您正在制作,那么您必须在自定义单元格中实现UITextFieldDelegate。它与组件无关。您可以在awakeFromNib 中处理设计布局的内容,但如果是委托,则拥有所有权。如果您在自定义单元格类中实现对 self 的委托,那么您必须通过您的 ViewController 中的委托再次传递它,这将作为额外的开销。
        • @RajanMaheshwari 我希望你不会对这个讨论感到不安,因为我一点也不 :) 确认 textFieldShouldReturn 在自定义单元格类中实现,“如果你在自定义单元格类中实现委托给 self ,然后你必须通过你的 ViewController 中的委托再次传递它,这会作为额外的开销”你可以尝试自己制作吗(向单元格添加一个文本字段并实现,将 textField.delegate = self 添加到 awakeFromNib 并实现 textFieldShouldReturn),它工作正常,无需将其传递给控制器​​。
        • 如果需要在ViewController 中更改某些内容,可以说要更改按钮颜色或需要更新某些标签,这是 ViewController 的一部分,只要按下返回键。然后你需要从 textFieldShouldReturn 委托传递一些东西给你的控制器类。基本上是另一个代表或一些通知或一些关闭
        猜你喜欢
        • 2017-05-23
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 2014-12-26
        • 1970-01-01
        相关资源
        最近更新 更多