7

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

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

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

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

我错过了什么?

谢谢!

4

2 回答 2

9

您应该查看文档,但最简单的是您需要继承 NSTableView 并覆盖此方法以验证提议的第一响应者。正如文档所述,除非首先选择该行,否则 NSTableViews 不允许使用某些控件。即使这样,它仍然可能会丢弃一些。

- (BOOL)validateProposedFirstResponder:(NSResponder *)responder forEvent:(NSEvent *)event {
    return YES;
}
于 2012-11-01T06:35:27.690 回答
0

除了 Robert Payne 的正确答案之外,您还可以使用 Swift 向 NSTableView 添加扩展,而不是对其进行子类化。

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

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

于 2016-04-23T13:24:07.027 回答