现在,我需要在nstextview中更改段落的对齐方式,而不是选中它,所以我需要知道该段落当前范围的范围?
发布于 2012-02-19 23:39:56
我有一个NSTextView的子类,所以你需要访问textStorage和selectedRange,而不是[self textStorage]和[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);发布于 2014-06-26 12:30:01
这是一条捷径:
NSRange paragraphRange = [textView.textStorage.string paragraphRangeForRange: [textView selectedRange]];发布于 2013-05-26 11:04:38
首先,通过[textView selectedRange]获取光标停留的范围
然后你可以通过[textView string]的- (NSRange)lineRangeForRange:(NSRange)range得到线路范围
下面是一个示例代码:
NSRange sel = [textView selectedRange];
NSString *viewContent = [textView string];
NSRange lineRange = [viewContent lineRangeForRange:NSMakeRange(sel.location,0)];https://stackoverflow.com/questions/5427906
复制相似问题