Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UITextView中检测用户输入(除委派外)_Ios_Uitextview - Fatal编程技术网

Ios 在UITextView中检测用户输入(除委派外)

Ios 在UITextView中检测用户输入(除委派外),ios,uitextview,Ios,Uitextview,我正在子类化UITextView,希望在其中处理用户输入。这不是一个利用委托的选项,因为应该可以将委托设置为不同的对象。有人知道我如何才能做到这一点吗?有一个解决方法。您可以使用UITextViewTextDidChange通知 class UITextViewPlus: UITextView { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) Notificat

我正在子类化
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)
    }    
}

注意:请记住
uitextviewtextdichange
在任何
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)
    }    
}
注意:请记住
UITextView文本didchange
任何
UITextView
中的任何文本更改都会发布通知