我已经实现了以下代码:
- (BOol)control:(NSControl *)control textVIEw:(NSTextVIEw *)textVIEw doCommandBySelector:(SEL)commandSelector { if (commandSelector == @selector(moveUp:)) { // move up return YES; } else if(commandSelector == @selector(moveDown:)){ // move down return YES; } return NO; }
虽然我可以使用它然后向上/向下移动行选择,例如:
[self.tableVIEw selectRowIndexes:[NSIndexSet indexSetWithIndex:currentRow ± 1] byExtendingSelection:NO];
我遇到的问题是我创建了不应该选择的Section header行,并且我已经使用NStableVIEwDelegate方法禁用了这些行的选择:
- (BOol)tableVIEw: (NStableVIEw *)tableVIEw shouldSelectRow: (NSInteger)row
但是,即使委托方法表明无法选择行,selectRowIndexes:indexSetWithIndex:currentRowbyExtendingSelection:方法也会选择标题行.
无论NStableVIEwDelegate说什么,似乎你仍然可以以编程方式选择行.我想要的是选择跳转标题行.
如果NStableVIEw是第一个响应者,则内置键盘控件会跳过标题行.
所以我的问题是有没有办法将上/下事件转发到NStableVIEw,以便移动选择的内置机制有效?
解决方法 以下适用于我,但我不确定是否有任何副作用.- (BOol)control:(NSControl *)control textVIEw:(NSTextVIEw *)textVIEw doCommandBySelector:(SEL)commandSelector{ if (commandSelector == @selector(moveUp:)) { // move up [_tableVIEw keyDown:[NSApp currentEvent]]; return YES; } else if(commandSelector == @selector(moveDown:)){ // move down [_tableVIEw keyDown:[NSApp currentEvent]]; return YES; } return NO;}总结
以上是内存溢出为你收集整理的macos – 如何将键盘上/下事件从NSTextField转发到NSTableView?全部内容,希望文章能够帮你解决macos – 如何将键盘上/下事件从NSTextField转发到NSTableView?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)