我在基于视图的表视图中使用常规(非子类)NSTableCellView。它具有初始图像和文本字段视图。我在视图中添加了一个NSStepper。
文本字段绑定到tableCellView.objectValue.quantity。 步进器的值也绑定到tableCellView.objectValue.quantity。
问题在于,当我运行应用程序时,当我单击步进器时,它似乎没有得到鼠标事件,箭头也没有突出显示,值不会递增或递减。
如果我设置了表视图的双重操作,如果我双击步进器就好像它是透明的一样,它会被触发。
我错过了什么?
谢谢!
答案 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。