Swift TextView自定义子类-textViewDidChange不会触发
我试图向TextView子类添加一个变量,但一旦我这样做,我就无法让textViewDidChange正常工作,我想这是因为委托 它在没有子类的情况下工作并打印itemOrderID。我如何让它与我的自定义子类一起工作Swift TextView自定义子类-textViewDidChange不会触发,swift,uitextview,Swift,Uitextview,我试图向TextView子类添加一个变量,但一旦我这样做,我就无法让textViewDidChange正常工作,我想这是因为委托 它在没有子类的情况下工作并打印itemOrderID。我如何让它与我的自定义子类一起工作 class textViewSub: UITextView { var itemOrderID: Double = 0.0 } class TextviewCell: UITableViewCell, UITextViewDelegate { @IBOutlet
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
协议不匹配。
应该是:
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)
}
您的
textViewDidChange
函数与UITextViewDelegate
协议不匹配。
应该是:
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)
}
确保将IB中的
textView
设置为TextViewSub
。另外,类名应该大写。@Koen是的,它已经设置好了。请确保每次重用单元格时都会调用awakeFromNib。或者可以肯定的是,将textView.delegate=self-better放在cellForRowAtIndexPath中,以确保始终设置委托。@Chris现在当我使用cell.textView.delegate=self-as时,它崩溃了!请向我们展示您的cellForRow…代码。确保您在IB中将textView
设置为TextViewSub
。另外,类名应该大写。@Koen是的,它已经设置好了。请确保每次重用单元格时都会调用awakeFromNib。或者可以肯定的是,将textView.delegate=self-better放在cellForRowAtIndexPath中,以确保始终设置委托。@Chris现在当我使用cell.textView.delegate=self-as时,它崩溃了!在cellForRow中的UITextViewDelegate请向我们显示您的cellForRow…代码。