在UITextView中检测用户输入(除了委托)
问题描述:
我在继承UITextView
并希望处理其中的用户输入。这不是一个利用委派的选择,因为应该可以将代表设置为不同的代理。任何人都知道我该怎么做到这一点?在UITextView中检测用户输入(除了委托)
答
对此有一个解决方法。您可以使用UITextViewTextDidChange
通知。
class UITextViewPlus: UITextView {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
NotificationCenter.default.addObserver(self, selector: #selector(textChange(_:)), name: .UITextViewTextDidChange, object: nil)
}
func textChange(_ sender: NSNotification) {
guard let textView = sender.object as? UITextViewPlus, textView == self else {
// ignoring text change of any other UITextView
return
}
// do something
}
deinit {
NotificationCenter.default.removeObserver(self)
}
}
注:只要记住UITextViewTextDidChange
通知发布于任何UITextView
任何文本变化。