UITextView的RxSwift事件

时间:2018-09-18 03:15:36

标签: ios swift rx-swift

当我通过RxSwift实现UITextFieldDelegate时,我会这样做:

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'的子类型

我找不到关于此问题的任何信息,还有另一种方法可以在RxSwift中实现UITextViewDelegate吗?

2 个答案:

答案 0 :(得分:7)

textView.rx.didBeginEditing.subscribe(onNext: { n in
  value = n
}, onCompleted: {
  completed = true
})

您可以尝试一下。

答案 1 :(得分:1)

您可以映射事件并像这样创建Observable字符串

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)