大苏尔中的 NSLayoutManager nil

时间:2021-06-17 23:48:14

标签: macos nstableview macos-big-sur nslayoutmanager nstableviewcell

我使用以下代码来支持编辑单元格时的 NSTableCellView 高度增长。单元格包含自定义 NSTextField,我在其中覆盖了 intrinsicContentSize:

override var intrinsicContentSize: NSSize {
    
    if !isEditable {
        return super.intrinsicContentSize
    }
    
    if let txt = self.window?.fieldEditor(false, for: self) as? NSTextView {
        
        if let container = txt.textContainer {

            if let layoutManager = container.layoutManager {
                layoutManager.ensureLayout(for: container)
                let size = layoutManager.usedRect(for: container).size

                return NSMakeSize(NSView.noIntrinsicMetric, size.height)  
            }
        }
    }
    
    return super.intrinsicContentSize
    
}

container.layoutManager 在 Big Sur 中总是返回 nil,它导致单元格在编辑时保持单行,而在 Catalina 中它不是 nil 并且单元格按预期增长。

如果有任何解决此问题的线索,我们将不胜感激。

0 个答案:

没有答案