[英]How to get the selected line range of NSTextView?
如何获得NSTextView
的选定行范围?
概述算法:
selectedRange
lineRangeForRange
获取组成所选内容的最后一个字符所在行的字符的范围。 lineRangeForRange
查找了前一行的范围。 重复此过程,直到到达文本开头。 您将拥有原始选择中最后一个字符的行号。 当然,您可以采用其他方法-从文本中第一个字符的行范围开始,然后继续。 对于每一行,检查选择内容的开始/结束位置是否在该行中,找到包含选择内容结束的行时停止。
对于执行反向操作的代码-给定一定范围的行,它会产生覆盖它们的选择-请参阅Apple的TextEdit代码示例 ,请查看LinePanelController.m
。 尽管这与您要阅读的内容相反,但是它将显示上述方法的工作方式。
HTH。
首先,通过[textView selectedRange]
获取所选范围
然后,您可以通过[textView string]
- (NSRange)lineRangeForRange:(NSRange)range
[textView string]
- (NSRange)lineRangeForRange:(NSRange)range
来获得行范围
NSRange sel = [textView selectedRange];
NSString *viewContent = [textView string];
NSRange lineRange = [viewContent lineRangeForRange:NSMakeRange(sel.location,0)];
看看NSTextView文档,有一个完整的部分专门讨论文本选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.