我有NSTextField
用作标签或可编辑文本字段,具体取决于应用程序是处于编辑模式还是处于查看模式。
更改文本字段可编辑性的代码是:
var editable : Bool = false {
didSet {
if editable {
titleTextField?.editable = true
titleTextField?.bezeled = true
titleTextField?.drawsBackground = true
titleTextField?.cell?.usesSingleLineMode = false
titleTextField?.cell?.wraps = true
editButton?.state = NSOnState
} else {
titleTextField?.editable = false
titleTextField?.bezeled = false
titleTextField?.drawsBackground = false
titleTextField?.cell?.usesSingleLineMode = false
titleTextField?.cell?.wraps = true
editButton?.state = NSOffState
}
}
}
@IBAction func editButtonPushed(sender : NSButton) {
if sender.state == NSOnState {
self.editable = true
}else{
self.editable = false
}
}
我已将Interface Builder中的NSTextField
定义为可编辑,并且未选中“使用单行模式”。文本字段位于自定义视图中,该视图是NSSplitView
中的右视图。自定义视图还包含一个按钮,用户可以使用该按钮切换编辑模式(它连接到上面代码中的操作)。
当文本字段中的标题很长(即多行)时,标题会在可编辑的文本字段中正确显示。当我单击“编辑”按钮(转换“编辑”模式)时,文本字段将变为不可编辑(上面的else语句)。
问题在于,在非编辑模式下,NSTextField
(和父自定义视图)会调整大小,以便完整标题适合ONE LINE上的NSTextField
(现在是标签)。我希望文本字段保持相同的大小,并使用两行来显示标题。
如何阻止调整文本字段的大小?我尝试过使用titleTextField?.cell?.usesSingleLineMode = false
和titleTextField?.cell?.wraps = true
,但两种解决方案都无效。