在适用于macOS的Cocoa应用程序中,是否可以在选择更改期间而不是仅在更改结束时获得通知?

问题描述

我想继续跟踪NSTextView的选择,但是当选择使用完改变我只许成功得到改变:

- (void)textViewDidChangeSelection:(NSNotification *)notification {

}

有没有办法持续跟踪选择变化?任何帮助是极大的赞赏。谢谢

解决方法

我通过继承NSTextView并重写以下方法成功解决了该问题:

-(void)setSelectedRanges:(NSArray<NSValue *> *)selectedRanges affinity:(NSSelectionAffinity)affinity stillSelecting:(BOOL)stillSelecting {

    [super setSelectedRanges:selectedRanges affinity:affinity stillSelecting:stillSelecting];

    if (stillSelecting && [self delegate] && [[self delegate] respondsToSelector:@selector(textViewDidChangeSelection:)]) {
        NSNotification *note = [[NSNotification alloc] initWithName:@"TextViewSelectionIsChangingNotification" object:self userInfo:nil];
        [[self delegate] textViewDidChangeSelection:note];
    }

}

在我看来,这是一个很好的解决方案,它运作良好。谢谢。