为什么我的 NSTextField 的 intrinsicContentSize 在我输入字符时没有改变?
Why does the intrinsicContentSize of my NSTextField not change as I enter characters?
我正在尝试实现自定义 NSTextField
,当文本添加到 NSTextField
时水平调整大小(不换行文本)。 Content Compression Resistance Priority 属性 应该可以帮助解决上述问题(我已将其设置为 1000),但实际上没有任何效果。
这让我想到了问题的标题:我在自定义 NSTextField
的重写 keyUp()
方法中调用了 intrinsicContentSize
,但它表明 intrinsicContentSize
不是改变 - 我很确定要使内容压缩阻力起作用,它需要改变 intrinsicContentSize
.
编辑
正如 Ken Thomas 在下面指出的那样,NSTextField
没有固有宽度,所以我不应该期望它会随着我输入更多字符而改变。下面是我添加的代码以使其发生变化:
override var intrinsicContentSize:NSSize{
return NSMakeSize(self.attributedStringValue.size.width + 20, 20)
}
override func textDidChange(notification: NSNotification) {
super.textDidChange(notification)
self.invalidateIntrinsicContentSize()
}
除非您尝试更改默认行为,否则可编辑文本字段没有固有宽度。即textField.intrinsicContentSize.width == NSViewNoInstrinsicMetric
。那是因为当文本字段可编辑时,它的内容不是内在的,而是外在的。
我正在尝试实现自定义 NSTextField
,当文本添加到 NSTextField
时水平调整大小(不换行文本)。 Content Compression Resistance Priority 属性 应该可以帮助解决上述问题(我已将其设置为 1000),但实际上没有任何效果。
这让我想到了问题的标题:我在自定义 NSTextField
的重写 keyUp()
方法中调用了 intrinsicContentSize
,但它表明 intrinsicContentSize
不是改变 - 我很确定要使内容压缩阻力起作用,它需要改变 intrinsicContentSize
.
编辑
正如 Ken Thomas 在下面指出的那样,NSTextField
没有固有宽度,所以我不应该期望它会随着我输入更多字符而改变。下面是我添加的代码以使其发生变化:
override var intrinsicContentSize:NSSize{
return NSMakeSize(self.attributedStringValue.size.width + 20, 20)
}
override func textDidChange(notification: NSNotification) {
super.textDidChange(notification)
self.invalidateIntrinsicContentSize()
}
除非您尝试更改默认行为,否则可编辑文本字段没有固有宽度。即textField.intrinsicContentSize.width == NSViewNoInstrinsicMetric
。那是因为当文本字段可编辑时,它的内容不是内在的,而是外在的。