我在窗口中放置了一個文本區域,並且我希望文本區域僅在聚焦時繪製背景。 我知道窗口中的所有控件共享一個字段編輯器。 我試過子類nstextfield並實現了becomeFirstResponder和resignFirstResponder。 並嘗試使用窗口的自定義單例編輯器。NSTextField:如何僅在聚焦時繪製背景
任何人都知道如何做到這一點?
在NSWindow,字段編輯器(一個單NSTextView實例)的每一個文本框或按鈕共享一個實例,因此,當您單擊文本框,文本框變成firstResponser第一,然後迅速把它傳遞到共享字段編輯器。因此,當文本字段失去焦點時,文本字段的resignFirstResponder將永遠不會被調用(因爲字段編輯器現在是FirstResponder)。
你可以看看fieldEditor:forObject:在NSWindow API中。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/fieldEditor:forObject:
SOLUTION: (謝謝,邁克爾戈爾巴奇) 在我的窗控制器
- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject
{
NSText *text = [sender fieldEditor:YES forObject:self];
if(text&&[anObject isKindOfClass:[MyCustomTextField class]])
{
[text setBackgroundColor:[NSColor whiteColor]];
[text setDrawsBackground:YES];
}
return text;
}
我會稍後再試一試。非常感謝。 – Luke 2011-05-26 08:32:44
它的工作原理!非常感謝 – Luke 2011-05-26 08:53:12
'setUpFieldEditorAttributes'方法在哪裏?我找不到那個。 – uchuugaka 2013-04-30 06:32:42