Когда я реализую UITextFieldDelegate через RxSwift, я делаю следующее:

self.textField_AddressType.rx.controlEvent(.editingDidBegin).subscribe { _ in
    // Code here...
}.disposed(by: self.disposeBag)

Но когда я применяю его к UITextView,

self.textView.rx.controlEvent(.editingDidBegin).subscribe { _ in
   // Code here...
}.disposed(by: self.disposeBag)

Я получаю ошибку:

'UITextView' не является подтипом 'UIControl'

Я не смог найти ничего об этой проблеме. Есть ли другой способ реализовать UITextViewDelegate в RxSwift?

5
Glenn Posadas 18 Сен 2018 в 06:15

2 ответа

Лучший ответ
textView.rx.didBeginEditing.subscribe(onNext: { n in
  value = n
}, onCompleted: {
  completed = true
})

Вы можете попробовать это.

10
Gary Lip 18 Сен 2018 в 03:34

Вы можете сопоставить событие и создать наблюдаемую строку, подобную этой

self.tfUserName.rx.controlEvent(UIControlEvents.editingDidEnd)
        .map { self.tfUserName.text }
        .filter { $0 != nil }
        .map { $0! }
        .subscribe(onNext: { (text) in
            // Code here...
        }).disposed(by: self.disposeBag)
3
Burak Öner 25 Дек 2018 в 18:20