gpt4 book ai didi

swift - TextView 自定义子类 - textViewDidChange 不触发

转载 作者:行者123 更新时间:2023-11-28 13:26:22 26 4
gpt4 key购买 nike

我正在尝试向我的 TextView 子类添加一个变量,但是一旦我这样做,我就无法让 textViewDidChange 正常工作,我认为这是因为委托(delegate)。

它在没有子类的情况下工作并打印 itemOrderID。我怎样才能让它与我的自定义子类一起使用?

class textViewSub: UITextView {
var itemOrderID: Double = 0.0
}

class TextviewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet weak var textView: textViewSub!
@IBOutlet weak var textViewLabel: UILabel!

override func awakeFromNib() {
super.awakeFromNib()
textView.delegate = self
}

func textViewDidChange(_ textView: textViewSub) {
let id = textView.tag
let text = textView.text
let itemOrderID = textView.itemOrderID

print(itemOrderID)
}
}

cellForRowAt 代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TextviewCell", for: indexPath) as! TextviewCell
cell.tag = indexPath.row
cell.textView.tag = indexPath.row
cell.textView.itemOrderID = checklistData[indexPath.section].checklistItems?[indexPath.row].itemOrderID ?? 0.0
cell.textView.delegate = cell

return cell
}

最佳答案

您的 textViewDidChange 函数与 UITextViewDelegate 协议(protocol)不匹配。应该是:

 func textViewDidChange(_ textView: UITextView) {
guard let sub = textView as? textViewSub else { return }
let id = sub.tag
let text = sub.text
let itemOrderID = sub.itemOrderID

print(itemOrderID)
}

关于swift - TextView 自定义子类 - textViewDidChange 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com