Re: keyboard focus handling in custom controls
Re: keyboard focus handling in custom controls
- Subject: Re: keyboard focus handling in custom controls
- From: iain <email@hidden>
- Date: Mon, 10 Sep 2018 16:07:32 +0100
> On 10 Sep 2018, at 2:19 pm, Alastair Houghton <email@hidden>
> wrote:
>
> On 10 Sep 2018, at 13:21, iain <email@hidden
> <mailto: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.
>
Ah, good idea, thank you.
> 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.
>
Yup, that’s all working already, the proper keyboard focus handling was the
last bit I needed that I couldn’t work out.
thanks
> Kind regards,
>
> Alastair.
>
> --
> http://alastairs-place.net <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