Re: Cocoa bug? Arrow keys stop working in table view [SOLVED]
Re: Cocoa bug? Arrow keys stop working in table view [SOLVED]
- Subject: Re: Cocoa bug? Arrow keys stop working in table view [SOLVED]
- From: Andrew Merenbach <email@hidden>
- Date: Sat, 29 Jul 2006 11:58:20 -0700
Thanks, Matt! I had in fact been using logs at various points, but
had thought that NSTableView implemented -moveUp: and -moveDown: for
table scrolling; that presupposition really threw me off as to why -
doCommandBySelector: was setting consumedKeyDown to YES (and as you
say it's due to the tab view accepting arrow keys).
I might direct anyone else who experiences any trouble with this to a
post by Daryn, at <http://www.cocoabuilder.com/archive/message/cocoa/
2002/7/28/72439>. Some clever methods for an outline view are
implemented there, and are easily-adaptable for a table view.
Many thanks to all who helped. My head is clearer now.
Cheers,
Andrew
On Jul 29, 2006, at 9:38 AM, Matt Neuburg wrote:
On or about 7/29/06 6:29 AM, thus spake "cocoa-dev-
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