我在基于视图的NSTextField
中设置了一些NSTableView
可编辑,并在“结束编辑”上发送操作(因此当按下Enter或Tab时,或焦点是丢失)。点击Tab时的行为是完美的:当前单元格右侧的单元格被选中并准备好进行编辑。 Shift + Tab也是如此。按Enter键时,该字段被“停用”,但同一行保持选中状态,这是正常行为。
我想要实现的是Tab的垂直版本,使用Enter键。
要明确:我正在我的桌子内编辑NSTextField
。我点击了Enter。我想要选择下一行,并且我之前编辑的同一列中的字段应该“激活”(意味着它变成可编辑的NSTextField
,其当前内容突出显示)。该动作仍应正常触发,就像在编辑单元格时按Tab键一样。
这可能吗?如果是,我将如何进行?
我考虑过对NSTextField
进行子类化并稍微使用keyDown
,但我想我必须使用通知中心来触发回调,这会使我的表格中的行选择发生变化激活下一个表格单元格。这看起来有点矫枉过正,我不知道如何让后者发生(激活NSTextField进行编辑)。
谢谢!
答案 0 :(得分:2)
我会使用NSControlTextEditingDelegate方法
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
使用文本字段检测回车键和
- (void)editColumn:(NSInteger)columnIndex row:(NSInteger)rowIndex withEvent:(NSEvent *)theEvent select:(BOOL)flag
选择表格视图中的下一行。
答案 1 :(得分:-1)
您需要通过两个步骤来解决问题。
在步骤1中使用的方法中,选择tableView中的下一行。
NSIndexPath *nextIndexPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];
[self.tableView selectRowAtIndexPath: nextIndexPath
animated:YES
scrollPosition:UITableViewScrollPositionNone];
[self tableView:self.tableView didSelectRowAtIndexPath: nextIndexPath];
希望得到这个帮助。