检测UITextView上的选择更改?

ary*_*axt 8 objective-c uitextview ios

有没有办法检测用户何时更改textview中所选文本的范围(在UITextView的子类中)?我找不到任何NSNotification.我尝试观察键值,但是没有调用所选范围的观察者

[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
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想使用UITextView的委托方法

Bor*_*aut 10

UITextView采用UITextInput协议.该协议包括必需的selectedTextRange读/写属性.这是您要响应更改的属性.

虽然您可以观察到该属性,但最简单的方法是覆盖-setSelectedTextRange:子类中的方法并执行您需要的任何其他行为.(您可能会或可能不想确认范围实际上正在发生变化,具体取决于您的特定设计.)