我在一个NSTextField子类中有一个NSTableCelView。我想改变它的光标颜色,因为现在光标和背景是一样的。
在我的应用程序的其他地方,我用方便的扩展更改了光标颜色,如下所示:
extension NSTextField {
public func cursorColor(_ cursorColor: NSColor) {
let fieldEditor = self.window?.fieldEditor(true, for: self) as! NSTextView
fieldEditor.insertionPointColor = cursorColor
}
}我将此方法放入viewWillDraw()中的NSTableCellView子类中:
override func viewWillDraw() {
name.cursorColor(NSColor.white)
}..。但是应用程序在extension内部的这一行崩溃
let fieldEditor = self.window?.fieldEditor(true, for: self) as! NSTextView //Crash!我认为这是因为它找不到对self.window的引用,但我不确定。
知道我做错什么了吗?
发布于 2018-06-01 20:14:59
NSWindow.fieldEditor(_: for:)返回一个NSText?,但是您试图显式地强制将它强制转换到一个NSTextView。
所以我的猜测是:
nil,而您的强制转换失败或NSText的一个不同的子类(因此不是NSTextView),而且您的转换失败了。当您崩溃时收到的实际错误消息是什么?
https://stackoverflow.com/questions/50650300
复制相似问题