2012-06-14 18 views
1

我有包含三個NSTextField個窗口,像這樣:啓用跳轉到只讀NSTextField?

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

雖然field1field2是可編輯的,field3設置爲「選擇」,即我可以用鼠標在它選擇文本和複製它,但我不能編輯文本。

field2引用field3nextKeyView出口,但是當我按下Tab鍵時field2是第一個響應者,field1被激活,而不是field3

只要我在界面生成器中將field設置爲'editable',即可按預期工作。

如何使tab成爲只讀NSTextField s?

+0

爲什麼要有人想要這樣做?可選擇的文本域旨在被看到並可被選擇。但請記住,'nextKeyView'是爲了控制鍵盤的操作而設計的。爲什麼有人想進入一個他**不能做**的領域? – pbx

+0

是的,你是對的,如果該字段不可選擇,但該字段是**可選**而不可編輯。 也許這可以用來選擇文本並從中複製。 – jackjr300

+0

@pbx:作爲一個用戶,我希望能夠在這個文本字段中標籤以複製內容,就像jackjr300說的那樣。 – tajmahal

回答

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在檢查。

就是這樣

+0

我曾考慮過這一點,但我正在尋找一種方法來做到這一點,而不需要子類化。但由於目前還沒有其他人回答我的問題,我想這是做到這一點的唯一方法。 – tajmahal