使用箭头键可以导航NSTableView的NSTableView周围的可编辑单元格,然后输入/标签?例如,我想让它更像一个电子表格.
这个应用程序的用户预计会编辑很多单元格(但不是全部),而且我认为如果不需要双击每个单元格,这样做会更容易.
解决方法
在Sequel Pro中,我们使用了一个不同的(在我的眼睛更简单)方法:我们实现了控件:textView:doCommandBySelector:在TableView的委托中.这个方法很难找到 – 它可以在NSControlTextEditingDelegate Protocol Reference中找到. (记住NSTableView是NSControl的一个子类)
长篇小说,这是我们想出来的(我们没有覆盖左/右箭头键,因为那些用于在单元格内导航,我们使用Tab左/右)
请注意,这只是Sequel Pro源代码中的一段代码,并且不起作用
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { NSUInteger row,column; row = [tableView editedRow]; column = [tableView editedColumn]; // Trap down arrow key if ( [textView methodForSelector:command] == [textView methodForSelector:@selector(moveDown:)] ) { NSUInteger newRow = row+1; if (newRow>=numRows) return TRUE; //check if we're already at the end of the list if (column>= numColumns) return TRUE; //the column count Could change [tableContentView selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; [tableContentView editColumn:column row:newRow withEvent:nil select:YES]; return TRUE; } // Trap up arrow key else if ( [textView methodForSelector:command] == [textView methodForSelector:@selector(moveUp:)] ) { if (row==0) return TRUE; //already at the beginning of the list NSUInteger newRow = row-1; if (newRow>=numRows) return TRUE; if (column>= numColumns) return TRUE; [tableContentView selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; [tableContentView editColumn:column row:newRow withEvent:nil select:YES]; return TRUE; }
原文地址:https://www.jb51.cc/c/111347.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。