• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Cocoa bug? Arrow keys stop working in table view
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cocoa bug? Arrow keys stop working in table view


  • Subject: Re: Cocoa bug? Arrow keys stop working in table view
  • From: Matt Neuburg <email@hidden>
  • Date: Sat, 29 Jul 2006 09:38:20 -0700
  • Thread-topic: Cocoa bug? Arrow keys stop working in table view

On or about 7/29/06 6:29 AM, thus spake "email@hidden"
<email@hidden>:

> Date: Fri, 28 Jul 2006 20:54:07 -0700
> From: Andrew Merenbach <email@hidden>
> Subject: Re: Cocoa bug? Arrow keys stop working in table view
> To: Corbin Dunn <email@hidden>
> Cc: email@hidden
> Message-ID: <email@hidden>
> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
>
> Thanks for the tip, Corbin, but I'm still a little confused.  Why
> does my custom table view support arrow-key navigation when it is
> *not* inside of a tab view?  Making it a subview of a split view or
> basic custom view doesn't disable the arrow keys; why should putting
> it inside a tab view (using the "Make subviews of" menu in IB) make
> any difference at all as to whether super's keyDown: is being called?
>
> Cheers,
> Andrew
>
> On Jul 28, 2006, at 6:03 PM, Corbin Dunn wrote:
>
>>
>> On Jul 28, 2006, at 5:38 PM, Andrew Merenbach wrote:
>>
>>> Hi, all.  I wonder whether I've found a possible bug with the
>>> Cocoa GUI system.  I have an NSTableView that I subclassed for
>>> delete-key and escape-key support, amongst other things.  For some
>>> reason after I put the table view inside of a tab view (as the
>>> only child view of the first tab view item, I might add) the
>>> default (untouched!) arrow-key support stops working.
>>>
>>> My key-handling code is as follows:
>>>
>>> - (void)keyDown:(NSEvent *)event {
>>>     consumedKeyDown = NO;
>>>     [self interpretKeyEvents:[NSArray arrayWithObject:event]];
>>>     if (!consumedKeyDown) [super keyDown:event];
>>> }
>>>
>>> - (void)doCommandBySelector:(SEL)selector {
>>>     consumedKeyDown = [self tryToPerform:selector with:nil];
>>> }
>>>
>>> (Where consumedKeyDown is a BOOL instance variable set to NO in -
>>> awakeFromNib.)
>>>
>>> Switching the table's class back to a regular table view solves
>>> the problem, as does commenting out the one line in -
>>> doCommandBySelector:
>>>
>>> I haven't been able to find anything in the docs or in the
>>> archives to explain the lack of arrow key functionality that I'm
>>> experiencing.  Does anyone have any pointers?  Is the tab view
>>> interfering with the arrow keys somehow?
>>>
>>
>> The keyboard nav for tableviews is handled in [super keyDown:].
>> Chances are, you aren't calling it. You may want to special case
>> those keys to let them through.

You could easily have answered this question with a few well-place NSLog
calls in your code. It isn't a Cocoa bug; it is your coopting of the
responder chain's message-handling that is faulty.

A down-arrow key (let's say) corresponds, when translated through
interpretKeyEvents, to moveDown:. But moveDown: is not implemented by
NSTableView! So when you call tryToPerform:, the moveDown: message
percolates up the view hierarchy, looking for someone to handle it.
NSTabView *does* handle it - so that's the end of that.

When the NSTableView is not in a tab view, on the other hand, *no* handler
for moveDown: is found. So the keyDown is not consumed, and [super keyDown:]
is called - giving the table view a chance to do what it is supposed to do
in the first place when a down-arrow is pressed.

In other words, it was just sheer luck that your code *ever* worked.

m.

--
matt neuburg, phd = email@hidden, http://www.tidbits.com/matt/
pantes anthropoi tou eidenai oregontai phusei
AppleScript: the Definitive Guide - Second Edition!
http://www.amazon.com/gp/product/0596102119
Take Control of Word 2004, Tiger, and more -
http://www.takecontrolbooks.com/tiger-customizing.html
Subscribe to TidBITS! It's free and smart. http://www.tidbits.com/



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Cocoa bug? Arrow keys stop working in table view [SOLVED]
      • From: Andrew Merenbach <email@hidden>
  • Prev by Date: Re: Co-ordinate systems
  • Next by Date: NStableView and delegate to heightOfRow
  • Previous by thread: Re: Cocoa bug? Arrow keys stop working in table view
  • Next by thread: Re: Cocoa bug? Arrow keys stop working in table view [SOLVED]
  • Index(es):
    • Date
    • Thread