我的应用中有两个NSTableView
,两者都设置相同,相同的参数等,它们有几列NSTextField
个单元格,第一列可编辑。
第一个表的行为与我想要的一样:如果用户点击,则选择该行。如果用户再次单击该行,则文本字段进入编辑模式,让用户更改其中的文本。
第二个表的行为应该相同,但不是:如果我单击其中的一行,大多数时候它会直接进入带有textfield的编辑模式。很少,这种情况不会发生。
有谁知道是什么原因造成的?我检查了所有参数(在IB中)和代码,它们在两个表上都是相同的。如果我在顽皮表中的文本字段中设置“拒绝第一响应者”,则根本不允许我编辑文本字段,因此该选项无效。
答案 0 :(得分:0)
解决了!它在第一个表视图上工作但导致第二个表上的编辑问题的原因是因为第一个表允许拖动而第二个表没有!它似乎以某种方式干扰doubleAction
(我甚至在某处读过一个可编辑的表不能有doubleAction
但它似乎没有问题)。我可以通过在第二个tableview的视图控制器中实现tableView(_:writeRowsWithIndexes:toPasteboard:)
并简单地返回false
来修复它(因为2.表不应该具有拖放功能)......
func tableView(aTableView:NSTableView, writeRowsWithIndexes rowIndexes:NSIndexSet, toPasteboard pboard:NSPasteboard) -> Bool
{
return false;
}