可可NSTextField不可编辑,并通过setSelectable消失

时间:2018-07-16 22:40:28

标签: objective-c macos cocoa appkit

我在弹出窗口的选项卡中有一个以编程方式创建的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

1 个答案:

答案 0 :(得分:1)

问题在于,使字段变为可编辑状态从控件中删除了最小宽度约束。添加宽度约束可以解决问题:

[parentView addConstraint:[NSLayoutConstraint constraintWithItem:addedControl
                                                       attribute:NSLayoutAttributeWidth
                                                       relatedBy:NSLayoutRelationGreaterThanOrEqual
                                                          toItem:nil // [button superview]
                                                       attribute:NSLayoutAttributeNotAnAttribute
                                                      multiplier:1 constant:40]];

感谢Willeke将有关尺寸的问题发送给我正确的方向。