如何获取NSTextView
的所选行范围?
答案 0 :(得分:5)
您的大纲算法:
selectedRange
lineRangeForRange
获取构成该选区最后一个字符所在行的字符的范围。lineRangeForRange
来查找该范围。前一行。重复此过程,直到到达文本的开头。您将拥有原始选择中最后一个字符的行号。当然你可以反过来工作 - 从文本中第一个字符的行范围开始,然后继续前进。对于检查选择的开始/结束是否在该行中的每一行,当您找到包含选择结束的行时停止。
对于反向执行的代码 - 给定一系列行,它会产生一个选择以覆盖它们 - 请参阅Apple的TextEdit code sample,查看LinePanelController.m
。虽然这与您想要阅读的内容相反,但它将显示上述方法的工作原理。
HTH。
答案 1 :(得分:2)
首先,通过[textView selectedRange]
获取所选范围
然后,您可以通过- (NSRange)lineRangeForRange:(NSRange)range
[textView string]
获取行范围
NSRange sel = [textView selectedRange];
NSString *viewContent = [textView string];
NSRange lineRange = [viewContent lineRangeForRange:NSMakeRange(sel.location,0)];
答案 2 :(得分:-1)
看一下NSTextView文档,有一整节用于处理文本选择: