【发布时间】:2020-08-19 20:12:44
【问题描述】:
我想连续跟踪 NSTextView 的选择,但我只有在选择完成更改后才能成功获取更改:
- (void)textViewDidChangeSelection:(NSNotification *)notification {
}
有没有办法连续跟踪选择变化?任何帮助是极大的赞赏。谢谢
【问题讨论】:
标签: cocoa nstextview
我想连续跟踪 NSTextView 的选择,但我只有在选择完成更改后才能成功获取更改:
- (void)textViewDidChangeSelection:(NSNotification *)notification {
}
有没有办法连续跟踪选择变化?任何帮助是极大的赞赏。谢谢
【问题讨论】:
标签: cocoa nstextview
我通过继承 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];
}
}
在我看来,这是一个很好的解决方案,效果很好。谢谢。
【讨论】: