Objective c 在NSTableView中使用箭头键模拟Tab和Shift选项卡
我想用右箭头和左箭头模拟tab和shift tab。我支持我必须为NSTableview创建子类并覆盖keydown代码,但我不知道如何告诉表视图必须编辑列和行中的单元格。这就是我能走的路Objective c 在NSTableView中使用箭头键模拟Tab和Shift选项卡,objective-c,xcode,cocoa,nstableview,nstableviewcell,Objective C,Xcode,Cocoa,Nstableview,Nstableviewcell,我想用右箭头和左箭头模拟tab和shift tab。我支持我必须为NSTableview创建子类并覆盖keydown代码,但我不知道如何告诉表视图必须编辑列和行中的单元格。这就是我能走的路 -(void)keyDown:(NSEvent*)event{ [super keyDown:event]; NSLog(@"%hi", [event keyCode]); if ([event keyCode] == 48 && ([event modifi
-(void)keyDown:(NSEvent*)event{
[super keyDown:event];
NSLog(@"%hi", [event keyCode]);
if ([event keyCode] == 48 && ([event modifierFlags] &
NSShiftKeyMask)){
[[self window] selectKeyViewPrecedingView:self];
}
if ([event keyCode] == 51){
[[self window] selectKeyViewPrecedingView:self];
}
if ([event keyCode] == 124){
if ([self selectedColumn] < [self numberOfColumns]-1) {
[self performClickOnCellAtColumn:[self selectedColumn]+1 row:[self selectedRow]];
}
}
if ([event keyCode] == 124){
if ([self selectedColumn] > 0) {
[self performClickOnCellAtColumn:[self selectedColumn]-1 row:[self selectedRow]];
}
}
}
-(void)向下键:(NSEvent*)事件{
[超级按键:事件];
NSLog(@“%hi”,[event keyCode]);
如果([event keyCode]==48&([event modifierFlags]&
NSShiftKeyMask){
[[self window]选择KeyView前视图:self];
}
如果([event keyCode]==51){
[[self window]选择KeyView前视图:self];
}
如果([event keyCode]==124){
如果([self selectedColumn]<[self numberOfColumns]-1){
[self-performClickOnCellAtColumn:[self-selectedColumn]+1行:[self-selectedRow]];
}
}
如果([event keyCode]==124){
如果([自选列]>0){
[self-performClickOnCellAtColumn:[self-selectedColumn]-1行:[self-selectedRow]];
}
}
}
与keydown相比,您可以从NSTableView覆盖NSControl委托:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
看看这篇文章的答案:比keydown更好,您可以从NSTableView覆盖NSControl委托:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
看看这篇文章的答案:我编辑了字段,但仍然无法移动到下一个或上一个单元格。我不明白你想做什么。我想使用左右箭头键(如tab和shift tab)在单元格之间移动,所以当我按右键时,我应该移动到下一个单元格并编辑它。你是什么意思,“在细胞之间移动?“如果使用此方法,它将选择并打开以编辑您指定的任何单元格。使用相同的逻辑,您必须选择下一行或下一列。通过此操作,我编辑了字段,但仍然无法移动到下一个或上一个单元格。我不明白您想做什么。我想使用左右箭头键(如tab和shift tab)在单元格之间移动,所以,当我按下右键时,我应该移动到下一个单元格并编辑它。你说的“在单元格之间移动”是什么意思?如果使用此方法,它将选择并打开以编辑你指定的任何单元格。使用与选择下一行或列相同的逻辑。