Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在NSTableView中使用箭头键模拟Tab和Shift选项卡_Objective C_Xcode_Cocoa_Nstableview_Nstableviewcell - Fatal编程技术网

Objective c 在NSTableView中使用箭头键模拟Tab和Shift选项卡

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

我想用右箭头和左箭头模拟tab和shift tab。我支持我必须为NSTableview创建子类并覆盖keydown代码,但我不知道如何告诉表视图必须编辑列和行中的单元格。这就是我能走的路

-(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)在单元格之间移动,所以,当我按下右键时,我应该移动到下一个单元格并编辑它。你说的“在单元格之间移动”是什么意思?如果使用此方法,它将选择并打开以编辑你指定的任何单元格。使用与选择下一行或列相同的逻辑。