现在我需要更改 nstextview 中段落的对齐方式而不选择它,所以我需要知道段落当前范围的范围?
问问题
1123 次
3 回答
2
我有一个子类,NSTextView
所以你需要访问textStorage
andselectedRange
不同于[self textStorage]
and [self selectedRange]
。
NSTextStorage *textStorage = [self textStorage];
NSString *string = [textStorage string];
NSUInteger editEnd = [self selectedRange].location;
NSUInteger editStart = editEnd-[textStorage editedRange].length;
NSUInteger maxLength = [string length];
while (editStart > 0) {
unichar theChr = [string characterAtIndex:editStart-1];
if( theChr == '\n' || theChr == '\r' ) {
break;
}
--editStart;
}
while (editEnd < maxLength) {
unichar theChr = [string characterAtIndex:editEnd];
if( theChr == '\n' || theChr == '\r' ) {
break;
}
++editEnd;
}
NSRange paragraphRange = NSMakeRange(editStart, editEnd-editStart);
于 2012-02-19T15:39:55.500 回答
1
这是一个快捷方式:
NSRange paragraphRange = [textView.textStorage.string paragraphRangeForRange: [textView selectedRange]];
于 2014-06-26T04:30:00.747 回答
0
首先,获取光标停留的范围[textView selectedRange]
然后您可以通过以下方式获取行- (NSRange)lineRangeForRange:(NSRange)range
范围[textView string]
这是一个示例代码:
NSRange sel = [textView selectedRange];
NSString *viewContent = [textView string];
NSRange lineRange = [viewContent lineRangeForRange:NSMakeRange(sel.location,0)];
里面有详细的。 如何获取 NSTextView 的选定行范围?
于 2013-05-26T03:04:38.413 回答