Here's some code that I've been using in an NSTextView subclass. It may be of some use.
Martin - (void) drawViewBackgroundInRect:(NSRect)rect { [super drawViewBackgroundInRect:rect]; NSRange sel = [self selectedRange]; NSString *str = [self string]; if (sel.location <= [str length]) { NSRange lineRange = [str lineRangeForRange:NSMakeRange(sel.location,0)]; NSRect lineRect = [self highlightRectForRange:lineRange]; NSColor *highlightColor = [NSColor grayColor]; [highlightColor set]; [NSBezierPath fillRect:lineRect]; } } // Returns a rectangle suitable for highlighting a background rectangle for the given text range. - (NSRect) highlightRectForRange:(NSRange)aRange { NSRange r = aRange; NSRange startLineRange = [[self string] lineRangeForRange:NSMakeRange(r.location, 0)]; NSInteger er = NSMaxRange(r)-1; NSString *text = [self string]; if (er >= [text length]) { return NSZeroRect; } if (er < r.location) { er = r.location; } NSRange endLineRange = [[self string] lineRangeForRange:NSMakeRange(er, 0)]; NSRange gr = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(startLineRange.location, NSMaxRange(endLineRange)-startLineRange.location-1) actualCharacterRange:NULL]; NSRect br = [[self layoutManager] boundingRectForGlyphRange:gr inTextContainer:[self textContainer]]; NSRect b = [self bounds]; CGFloat h = br.size.height; CGFloat w = b.size.width; CGFloat y = br.origin.y; NSPoint containerOrigin = [self textContainerOrigin]; NSRect aRect = NSMakeRect(0, y, w, h); // Convert from view coordinates to container coordinates aRect = NSOffsetRect(aRect, containerOrigin.x, containerOrigin.y); return aRect; } On 4, Nov, 2011, at 04:33 PM, Douglas Davidson wrote: > The NSLayoutManager will tell you. Try taking a look at the conceptual > documentation and some of the sample code for NSLayoutManager, and let me > know if you have any problems. > > Douglas Davidson > > On Nov 4, 2011, at 6:19 AM, Nick <eveningn...@gmail.com> wrote: > >> Hello >> Basically the question is about getting the NSRange of the line of >> NSTextView where the text input cursor is currently in. >> Word wraps are considered as legal 'new lines' - only one line should >> actually be highlighted. >> >> How could I do this (get an NSRange of a single line)? >> Thank you >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/cocoa-dev/ddavidso%40apple.com >> >> This email sent to ddavi...@apple.com > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/cocoa-dev/martin.hewitson%40aei.mpg.de > > This email sent to martin.hewit...@aei.mpg.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Martin Hewitson Albert-Einstein-Institut Max-Planck-Institut fuer Gravitationsphysik und Universitaet Hannover Callinstr. 38, 30167 Hannover, Germany Tel: +49-511-762-17121, Fax: +49-511-762-5861 E-Mail: martin.hewit...@aei.mpg.de WWW: http://www.aei.mpg.de/~hewitson ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com