Пользовательский подкласс TextView - textViewDidChange не запускается - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь добавить переменную в свой подкласс TextView, но не могу заставить textViewDidChange работать должным образом, как только я это сделаю, и я думаю, что это потому, что делегат.

Работает без подкласса и печатает 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
}

1 Ответ

1 голос
/ 08 октября 2019

Ваша 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)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...