无法选择或编辑 Tableview 单元格内的文本字段

Posted

技术标签:

【中文标题】无法选择或编辑 Tableview 单元格内的文本字段【英文标题】:Can't select or edit Textfield inside Tableview cell 【发布时间】:2020-10-24 17:47:29 【问题描述】:

我有一个控制器 EditProfileController: UITableViewController 和一个单元格 EditProfileCell: UITableViewCell

extension EditProfileController 
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! EditProfileCell
        cell.delegate = self
        return cell
    

我的EditProfileCell

这是我的文本字段:

class EditProfileCell: UITableViewCell 
    lazy var infoTextField: UITextField = 
        let tf = UITextField()
        tf.borderStyle = .none
        tf.font = UIFont.systemFont(ofSize: 14)
        tf.textAlignment = .left
        tf.textColor = .white
        tf.isUserInteractionEnabled = true

        return tf
    ()


问题:我可以使用模拟器编辑文本字段的信息。但是当我在我的 iPhone 上运行应用程序时,我什至无法选择文本字段,甚至键盘也没有出现。

我已经测试了在扩展上添加cell.infoTextField.becomeFirstResponder(),它可以工作,但这只会使最后一个文本字段变得可编辑。

我做错了什么?

【问题讨论】:

文本字段上是否有东西? 你能分享代码 sn-p 你在单元格的内容视图中附加这个懒惰创建的文本字段吗?另外请附上您的EditProfileCell的完整实现。 我刚刚意识到我是。将becomeFirstResponder() 添加到numberOfRowsInSection 而不是didSelectRowAt。谢谢大家! 【参考方案1】:

您必须将 contentView.isUserInteractionEnabled 设置为 false

extension EditProfileController 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! EditProfileCell
        cell.delegate = self
        cell.contentView.isUserInteractionEnabled = false
        
        return cell
     

【讨论】:

以上是关于无法选择或编辑 Tableview 单元格内的文本字段的主要内容,如果未能解决你的问题,请参考以下文章

在单元格内编辑textview时,将另一个单元格添加到tableview

Tableview单元格内UItextView的奇怪行为

tableview单元格内的ios文本字段

WPS或EXCEL如何让文本框引用单元格内的内容?

在Swift中单击后修改tableview中的单元格内容

多个tableview单元格内的Collectionview,如何处理选择?