UITextViewTextDidChange

UITextViewTextDidChange

我将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中的文本更改时发布。

关于ios - 在UITextView中检测用户输入(除了委托(delegate)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45585813/

10-12 14:45