objective-c – 带NSTableView的箭头键
发布时间:2020-12-16 03:28:49 所属栏目:百科 来源:网络整理
导读:使用箭头键可以导航NSTableView的NSTableView周围的可编辑单元格,然后输入/标签?例如,我想让它更像一个电子表格. 这个应用程序的用户预计会编辑很多单元格(但不是全部),而且我认为如果不需要双击每个单元格,这样做会更容易. 解决方法 在Sequel Pro中,我们使
使用箭头键可以导航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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |