我想在自定义视图中使用 NSTableCellView 而不是 TableView。所以我创建了一个带有标准 NSTableCellView 的 xib 文件并将其加载到视图中。
表格单元格视图按预期显示。但我不能让它的文本字段成为第一响应者。它没有响应鼠标事件,当我明确地将其设为第一响应者时,它甚至没有反应。makeFirstResponder 返回 true,但我没有看到闪烁的光标,并且它不响应任何关键事件。
但是,向视图添加常规文本字段确实有效。
class ViewController: NSViewController
{
@IBOutlet var myView: NSView!
@IBOutlet var cellView: NSTableCellView! //ViewController is the file owner of the xib file
override func viewDidLoad()
{
super.viewDidLoad()
NSBundle(forClass: ViewController.self).loadNibNamed("Cell", owner: self, topLevelObjects: nil)
myview.addSubview(cellView)
cellView.layer?.borderColor = Color.blackColor().CGColor
cellView.layer?.borderWidth = 1
}
override func mouseDown(event: NSEvent)
{
let result = self.view.window?.makeFirstResponder(cellView.textField!)
print(result) //prints true
}
我为什么要这样做?好吧,我想了解如何实现基于视图的表格视图。看起来,tableview 的核心似乎只是一个包含很多(可能是缓存和重用?)子视图的视图。另外,我一直认为在 OS X 上为了提高效率,视图数量是有限的?