I have a custom NSTableView
subclass filled with several custom NSTextFieldCell
subclasses. I would like to be able to change the edited cell by using
I spent almost all day on this problem, but I finally figured it out. In order to be able to traverse my NSTableView subclass with the arrow keys, I had to add the following method to my NSTableView:
- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
if(aSelector == @selector(moveUp:)) {
[self moveSelectionToPreviousRow];
return YES;
} else if(aSelector == @selector(moveDown:)) {
[self moveSelectionToNextRow];
return YES;
} else if(aSelector == @selector(moveLeft:)) {
[self moveSelectionToPreviousColumn];
return YES;
} else if(aSelector == @selector(moveRight:)) {
[self moveSelectionToNextColumn];
return YES;
}
return NO;
}
This is because the default field editor is an NSTextView (not an NSControl) so I needed to use the
protocol. The view that is set as its delegate is the NSTableView, not the NSTextFieldCell. The moveSelectionTo...
functions are custom functions defined in my NSTableView subclass that keep track of the currently edited cell and then move it around accordingly.