3

我想在自定义视图中使用 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 上为了提高效率,视图数量是有限的?

4

0 回答 0