NSTableCellView中的NSStepper无效

时间:2012-10-28 10:49:35

标签: objective-c nstablecellview

我在基于视图的表视图中使用常规(非子类)NSTableCellView。它具有初始图像和文本字段视图。我在视图中添加了一个NSStepper。

文本字段绑定到tableCellView.objectValue.quantity。 步进器的值也绑定到tableCellView.objectValue.quantity。

问题在于,当我运行应用程序时,当我单击步进器时,它似乎没有得到鼠标事件,箭头也没有突出显示,值不会递增或递减。

如果我设置了表视图的双重操作,如果我双击步进器就好像它是透明的一样,它会被触发。

我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:9)

您应该查看文档,但最简单的是您需要子类化NSTableView并覆盖此方法以验证建议的第一响应者。正如文档所述,NSTableViews禁止使用某些控件,除非首先选择该行。即便如此,它仍然可能会丢弃一些。

- (BOOL)validateProposedFirstResponder:(NSResponder *)responder forEvent:(NSEvent *)event {
    return YES;
}

答案 1 :(得分:0)

除了Robert Payne的正确答案之外,使用Swift你可以为NSTableView添加一个扩展而不是它的子类。

extension NSTableView {
    override public func validateProposedFirstResponder(responder: NSResponder, forEvent event: NSEvent?) -> Bool {
        return true
    }
}

我想强调它是NSTableView而不是NSTableViewCell。