Re: keyboard focus handling in custom controls
Re: keyboard focus handling in custom controls
- Subject: Re: keyboard focus handling in custom controls
- From: Alastair Houghton <email@hidden>
- Date: Mon, 10 Sep 2018 14:19:10 +0100
On 10 Sep 2018, at 13:21, iain <email@hidden> wrote:
>
> I have an application, which has 3 controls
>
> [button] [custom view] [button]
>
> I’ve set the NextKeyView of each of them to the control to the right
> [button] -> [custom view] -> [button]
>
> And the tab and shift tab works between them as expected.
>
> The situation gets more complicated because the custom view has 3 possible
> focus areas, which I also want to be part of the tab chain.
> As it’s one big custom drawn widget, I’ve implemented a rudimentary tab
> handler in the KeyDown: method with a counter to keep track of which area is
> focused.
> And it sort of works
>
> But, I’m wondering how to know if the parent NSView gained keyboard focus
> through a tab or a shift-tab
>
> If focus is on the first button, and you press Tab, the focus should go to
> the 1st area of the custom view
> If focus is on the last button and you Shift Tab from it, the focus should go
> to the 3rd area of the custom view
> Currently, it always has to go to the area that was focused when the view
> lost focus.
>
> Is there a way to do what I’m wanting?
In your -becomeFirstResponder, you could examine the current event (noting that
keypresses aren’t the only way you could gain keyboard focus) to determine
whether it was a Tab or Shift-Tab keypress. You can get the event using [NSApp
currentEvent]. Make sure it works with Full Keyboard Access turned on in System
Preferences as well.
Also note that you will want to implement the relevant accessibility support;
otherwise, when users turn on VoiceOver, they won’t be able to focus individual
elements in your view, and the VoiceOver cursor (which is not the same thing as
the normal keyboard focus system) won’t interact properly with your view.
Kind regards,
Alastair.
--
http://alastairs-place.net
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden