当“标题栏”设置为不显示时,为什么我无法在NSPanel中获得焦点?

时间:2011-09-11 15:44:55

标签: objective-c cocoa

如果我在Xcode 4.1中创建一个项目,并将MainMenu.xib设置为有两个NSPanels,并在两个面板中放置一个NSTextField,如果我将其中一个NSPanel设置为不显示“Title Bar”,则为textfield在该面板内无法点击或给予焦点。

为什么?

1 个答案:

答案 0 :(得分:9)

没有标题栏的窗口(或面板)无法成为键,因此无法获得焦点。您必须对其进行子类化并覆盖其- (BOOL)canBecomeKey方法,如下所示:

@interface MyPanel : NSPanel
@end

@implementation MyPanel

- (BOOL)canBecomeKeyWindow {
    return YES;
}

@end