在适用于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];
    }

}

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...