在自定义单元格中聚焦 UITextfield

Posted

技术标签:

【中文标题】在自定义单元格中聚焦 UITextfield【英文标题】:Focus UITextfield in Custom cell 【发布时间】:2017-05-23 16:02:54 【问题描述】:

我在自定义单元格中有 2 个UITextfield。现在我想在从其他视图推送时将焦点设置在第一个文本字段上。

这是我在 cellForRowAt 委托中的代码,但这不起作用:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
 let userCell = tableView.dequeueReusableCell(withIdentifier: "InputUserInfoForm") as! InputUserInfoForm
        userCell.selectionStyle = .none

        userCell.fistnameTextField.autocorrectionType = .no
        userCell.lastnameTextField.autocorrectionType = .no

        // Firstname textfield
        userCell.fistnameTextField.tag = RegisterForm.Firstname.rawValue
        userCell.firstnameLabel.text = "FirstnameTitle".localized()
        userCell.firstnameLabel.becomeFirstResponder()

        // Lastname textfield
        userCell.lastnameTextField.tag = RegisterForm.Lastname.rawValue
        userCell.lastnameLabel.text = "LastnameTitle".localized()

        return userCell

【问题讨论】:

你为什么要把这段代码放在cellForRowAt?它似乎更适合viewDidAppear 【参考方案1】:

问题是,您有多个单元格,每次绘制它们时都会指示becomeFirstResponder

如果您只想在显示表格时将焦点设置在第一个单元格上,并且只有这样,您可以在 indexPath.row == 0viewDidAppear 中标记 UITextField,您只需使用标记获取该字段并设置becomeFirstResponder

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
 let userCell = tableView.dequeueReusableCell(withIdentifier: "InputUserInfoForm") as! InputUserInfoForm
    userCell.selectionStyle = .none

    userCell.fistnameTextField.autocorrectionType = .no
    userCell.lastnameTextField.autocorrectionType = .no

    // Firstname textfield
    userCell.fistnameTextField.tag = RegisterForm.Firstname.rawValue
    userCell.firstnameLabel.text = "FirstnameTitle".localized()
    if indexPath.row == 0 
        userCell.firstnameLabel.tag = 123
    

    // Lastname textfield
    userCell.lastnameTextField.tag = RegisterForm.Lastname.rawValue
    userCell.lastnameLabel.text = "LastnameTitle".localized()

    return userCell


override func viewDidAppear(animated: Bool) 
    super.viewDidAppear(animated)

    self.view.viewWithTag(123)

【讨论】:

@ManhNguyen 我看到你是 *** 的新手。如果此答案解决了您的问题,请不要忘记将其标记为已接受。谢谢。

以上是关于在自定义单元格中聚焦 UITextfield的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义单元格中同步选择文本视图的事件?

在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath

UIButton 在自定义单元格中更改

如何在自定义表格视图单元格中保存文本字段

在自定义单元格中访问 FSCalendar 函数

使用 touchesMoved: 在自定义单元格中确定触摸是不是在图像上