Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTableView向下键:和鼠标向下键:_Objective C_Cocoa_Nstableview - Fatal编程技术网

Objective c NSTableView向下键:和鼠标向下键:

Objective c NSTableView向下键:和鼠标向下键:,objective-c,cocoa,nstableview,Objective C,Cocoa,Nstableview,我一直在为Mac开发一个菜单栏笔记应用程序。它是用Objective-C和Cocoa编写的,我正在使用BWToolkit。我的问题是在BWTransparentTableView(NSTableView的子类)中获取keyDown:和mouseDown:事件。我就是不能让它工作。我试着在互联网上搜索,有些地方说你必须将NSTableView子类化。我试过了,但还是不行。我对Objective-C和Cocoa非常陌生,可能只是做了一些不正确的事情。当双击或按下返回键时,NSTableView中的项

我一直在为Mac开发一个菜单栏笔记应用程序。它是用Objective-C和Cocoa编写的,我正在使用BWToolkit。我的问题是在BWTransparentTableView(NSTableView的子类)中获取keyDown:和mouseDown:事件。我就是不能让它工作。我试着在互联网上搜索,有些地方说你必须将NSTableView子类化。我试过了,但还是不行。我对Objective-C和Cocoa非常陌生,可能只是做了一些不正确的事情。

当双击或按下返回键时,
NSTableView
中的项目将自动开始编辑。确保表视图、单元格和阵列控制器(如果使用)标记为可编辑

如果您没有使用
NSArrayController
,请确保您的表视图有一个委托,并且它响应
tableView:shouldEditTableColumn:row:

要处理双击,只需设置表视图的
doubleAction

- (void)awakeFromNib
{
    [tableView setTarget:self];
    [tableView setDoubleAction:@selector(doubleClickInTable:)];
}

- (void)doubleClickInTable:(id)sender
{
    NSInteger rowIndex = [sender selectedRow]; //Use selectedRowIndexes if you're supporting multiple selection
    //Handle the double click
}

请注意,这两种方法都不要求您对
NSTableView

中的
NSTableView
项进行子类化,当双击或按下返回键时,这些项将自动开始编辑。确保表视图、单元格和阵列控制器(如果使用)标记为可编辑

如果您没有使用
NSArrayController
,请确保您的表视图有一个委托,并且它响应
tableView:shouldEditTableColumn:row:

要处理双击,只需设置表视图的
doubleAction

- (void)awakeFromNib
{
    [tableView setTarget:self];
    [tableView setDoubleAction:@selector(doubleClickInTable:)];
}

- (void)doubleClickInTable:(id)sender
{
    NSInteger rowIndex = [sender selectedRow]; //Use selectedRowIndexes if you're supporting multiple selection
    //Handle the double click
}

请注意,这两种方法都不要求您将子类化
NSTableView

张贴子类化尝试的相关部分以及您看到的错误(除了“无法使其工作”,即:-))。从这里开始最简单。我尝试在一个名为MyTableView的类中对NSTableView进行子类化。该类所做的唯一事情是重写keyDown:,但从未调用keyDown:。是否有其他方法可以在NSTableView中获取键盘和鼠标事件?我真正想要的是允许双击表视图中的项目以打开它们,并在按下enter键或缓慢双击时重命名它们。您认为需要覆盖
键下:
鼠标向下:
?文档中说,当按下enter键时不会发送双击消息该单元格是可编辑的。我搜索了一下,我所能找到的就是它们必须被覆盖才能让它工作。发布你的子类化尝试的相关部分以及你看到的错误(除了“不能让它工作”,即:-))。从这里开始最简单。我尝试在一个名为MyTableView的类中对NSTableView进行子类化。该类所做的唯一事情是重写keyDown:,但从未调用keyDown:。是否有其他方法可以在NSTableView中获取键盘和鼠标事件?我真正想要的是允许双击表视图中的项目以打开它们,并在按下enter键或缓慢双击时重命名它们。您认为需要覆盖
键下:
鼠标向下:
?文档中说,当按下enter键时不会发送双击消息该单元格是可编辑的。我搜索了一下,我所能找到的就是它们必须被覆盖才能让它工作。谢谢!它工作得很好。只是我在文档中读到,如果一个单元格是可编辑的,doubleAction:不会被发送。对我来说非常有效。谢谢非常感谢。它工作得很好。只是我在文档中读到,如果一个单元格是可编辑的,doubleAction:不会被发送。对我来说非常有效。谢谢