无法选择或编辑 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 单元格内的文本字段的主要内容,如果未能解决你的问题,请参考以下文章