检测UITextView上的select更改?

有没有一种方法来检测用户何时更改文本视图中的选定文本的范围(在UITextView的子类)? 我找不到任何NSNotification。 我试着观察keyvalues,但选定范围的观察者没有被调用

[self addObserver:self forKeyPath:@"selectedRange" options:NSKeyValueObservingOptionNew context:nil]; - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqual:@"selectedRange"]) { // Do stuff } } 

我不想使用UITextView的委托方法

UITextView采用UITextInput协议。 该协议包含必需的selectedTextRange读/写属性。 这是你想要对变化做出反应的财产。

虽然您可以观察该属性,但最简单的方法是重写子类中的-setSelectedTextRange:方法,并在其中执行所需的任何其他行为。 (您可能会也可能不想确认范围实际上正在改变,这取决于您的特定devise。)