On Feb 4, 2012, at 16:17 , Graham Cox wrote:

> The way I've done this is to handle the focus ring in the view's -drawRect 
> method. You need to focus on the superview so you can draw outside your 
> frame, but that's not a problem - just do it after you've drawn the rest of 
> your normal content.

The one issue this doesn't solve is that of making room around the view to draw 
the focus ring. If one or more edges of the view are flush with the edge of the 
window, the exterior ring looks ugly.

In the past, I've sometimes taken the approach of drawing the focus ring 
*inside* the view. (Use the view bounds rect, inset by 1.0, to draw the focus 
ring, and don't lock focus on the superview, of course.) It looks pretty good 
-- it's slightly transparent so it doesn't obscure the content much. However, 
with this approach, there's apparently no way to take advantage of the spiffy 
new Lion methods for focus rings. It's also less than ideal during an inertial 
scroll "bounce".

> The only other thing I've found necessary is to track whether the focus ring 
> needs an update or not by using -setKeyboardFocusRingNeedsDisplayInRect:[self 
> bounds] which I call from -becomeFirstResponder and -resignFirstResponder.

I think you also need to force an update when the app is deactivated. The 
window is still the key window, but the focus ring shouldn't be drawn.


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to