在UITextView中检测用户输入(除了委托)

时间:2017-08-09 08:47:40

标签: ios uitextview

我是UITextView的子类,想要处理其中的用户输入。利用委托不是一种选择,因为应该可以将委托设置为不同的委托。谁知道我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

有一种解决方法。您可以使用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中任何文字更改的通知。