XCode / Swift OSX。在ViewBased NSTableView

时间:2016-05-06 12:14:47

标签: swift macos edit nstableview

在我询问与OSX相关的问题之前,请允许我描述MS Windows中的一项功能。

如果我在MS Visual Studio中创建一个Windows应用程序,其中应用程序包含一个简单的DataGrid,用户只需单击一个单元格,编辑内容并使用键盘向上/向下箭头键快速移出单元格到下一个。键入单元格会触发EndEdit事件。使用向上/向下箭头键,用户可以快速向下移动列编辑值,而无需按Enter键或使用鼠标。

我正在尝试用OSX XCode / Swift做同样的事情。使用鼠标单击进入单元格并编辑是没有问题的。但似乎我必须单击两次单元格才能将其选中进行编辑,然后在编辑后我必须按Enter键或单击另一个单元格。我不能简单地使用向上/向下箭头键来键出单元格。

这就是OSX的工作方式吗?我的意思是我正在制作一个OSX应用程序,所以我希望它的行为就像一个本机应用程序,但它似乎需要很多输入和点击,例如,如果用户要编辑几个单元格。

我需要在ViewBased TableView中设置任何属性吗?

很抱歉这封长电子邮件 - 我希望我已经解释过了。

由于 伊恩

1 个答案:

答案 0 :(得分:0)

经过多次努力,我得到的东西似乎完全符合我的要求。

myTableView位于NSViewController上。 在NSViewController的viewDidLoad()中,我得到了这个:

super.viewDidLoad();

NSEvent.addLocalMonitorForEventsMatchingMask(NSEventMask.KeyDownMask, handler:{
    (event: NSEvent) in
    self.myTableView.keyDown(event);

    switch(event.keyCode)
    {
        case 36:
            return nil;
        case 125:
            return nil;
        case 126:
            return nil;
        default:
            return event;
     }
})

我必须承认我并非100%确定,但我的想法是,tableView的默认行为是用于向上/向下箭头键来向上或向下移动行选择,但这并不是&#39 ; t正在编辑单元格时发生。当文本单元具有编辑焦点时,向上/向下键只需将光标移动到单元格的开始/结束(即将光标移动到单元格内)。不是我想要的行为,所以我想如果我可以吞下(制作零)单元格中的那些事件,那么箭头按键会冒泡到tableview,它会进行上/下行选择 - 如果你看到我的意思。 / p>

无论如何 - 无论我的想法在哪里 - 这似乎完全符合我的要求,当编辑焦点到达下一个单元格时,它会立即进行编辑焦点。基本上就像在excel和数字等程序中一样工作。