J'ai un NSTableView avec un certain nombre de lignes. La propriété allowEmptySelection est NO, donc il y a toujours une ligne sélectionnée. Je peux monter et descendre la tableview avec les touches fléchées comme prévu.Simuler les touches fléchées avec 'j' et 'k' dans une NSTableView?
J'aimerais aussi pouvoir monter et descendre avec les touches 'j' et 'k'. J'ai regardé le Cocoa Event-Handling Guide, mais je n'arrive pas à comprendre comment faire pour que ces touches simulent les flèches haut et bas.
Pour ce que ça vaut, voici ce que je suis en train de faire. Je ne suis pas vraiment en train de 'simuler les touches fléchées'. Au contraire, je fais juste le comportement que je veux quand «j» et «k» sont pressés. Il est très bien, mais je me demande s'il y a une meilleure façon ...
- (void)keyDown:(NSEvent *)theEvent {
NSInteger row = [self.tableView selectedRow];
NSInteger numRows = [self.tableView numberOfRows];
switch ([theEvent keyCode]) {
case 38: // 'j'
if (row < numRows - 1) {
[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:row+1] byExtendingSelection:NO];
}
break;
case 40: // 'k'
if (row > 0) {
[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:row-1] byExtendingSelection:NO];
}
break;
default:
[super keyDown:theEvent];
}
}
J'ai essayé, mais je reçois cette erreur: - [MyTableView moveUp:]: sélecteur non reconnu envoyé à l'instance 0x100148270. Apparemment, il ne peut pas trouver -moveUp/-moveDown. Une idée? – sam
Notez que 'moveUp:' est un nom de méthode différent de 'moveUp' (sans les deux-points). L'exemple de code de ughoavgfhw suppose que vous avez défini les méthodes comme '- (void) moveUp: (id) sender' et' - (void) moveDown: (id) sender'. – NSGod
@NSGod: Ce sont des méthodes prédéfinies pour gérer les touches fléchées, pas des hypothèses. NSTableView ne doit pas les utiliser. Vous pouvez essayer de créer un faux événement avec des codes de touches fléchées et le passer en super (je vais montrer comment dans une mise à jour). – ughoavgfhw