我在弹出窗口的选项卡中有一个以编程方式创建的AppKit / Cocoa NSTextField。我用以下方法创建控件:
NSTextField *textField = [[NSTextField alloc] init];
[textField setBezeled:YES];
[textField setDrawsBackground:YES];
[textField setEditable:YES];
[textField setSelectable:NO];
[textField setTranslatesAutoresizingMaskIntoConstraints:NO];
return textField;
,然后将其插入具有各种布局约束的父级NSView(在对话框的选项卡控件中),并显示在正确的位置。但是,该文本字段不可编辑或选择。如果我将实例化为
[textField setSelectable:YES];
该控件显示在XCode的Debug View Hierarchy工具中的树视图中,具有与我期望的相同的约束,但是该视图在屏幕上或Debug View Hierarchy的可视显示中不可见工具。
即使使用[textField setSelectable:NO]
,我也无法编辑在控件中设置的文本。
XCode版本9.4.1(9F2000)/ macOS High Sierra 10.13.5
答案 0 :(得分:1)
问题在于,使字段变为可编辑状态从控件中删除了最小宽度约束。添加宽度约束可以解决问题:
[parentView addConstraint:[NSLayoutConstraint constraintWithItem:addedControl
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:nil // [button superview]
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1 constant:40]];
感谢Willeke将有关尺寸的问题发送给我正确的方向。