启用Tab键为只读NSTextField?

时间:2012-06-14 00:11:35

标签: macos cocoa

我有一个包含三个NSTextField的窗口,如下所示:

+------------------------+
| +--------------------+ |
| | field1 (editable)  | |
| +--------------------+ |
| +--------------------+ |
| | field2 (editable)  | |
| +--------------------+ |
| +--------------------+ |
| | field3 (selectable)| |
| +--------------------+ |
+------------------------+

field1field2可编辑,field3设置为“可选”,即我可以使用鼠标选择文本并从中复制,但我无法编辑文本。

field2引用field3作为其nextKeyView出口,但当Tab是第一响应者field2时,我按field1键时,field3被激活而不是field

只要我在Interface Builder中将NSTextField设置为'editable',标签就会按预期工作。

如何启用标签为只读{{1}}?

1 个答案:

答案 0 :(得分:1)

当我们知道时,只需创建 NSTextFieldCell 的子类即可: 在Xcode中添加一个名为“ myNonEditableCellClass ”的

myNonEditableCellClass.h

中的代码
#import <Cocoa/Cocoa.h>
@interface myNonEditableCellClass : NSTextFieldCell {}
@end

-

myNonEditableCellClass.m

中的代码
#import "myNonEditableCellClass.h"

@implementation myNonEditableCellClass
- (BOOL)acceptsFirstResponder {
    return YES;}
@end

进入“ Interface Builder ”:选择第三个NSTextField,再次点击选择NSTextFieldCell,在检查器中将其类更改为myNonEditableCellClass

就是这样