4

我有一个 NSWindow(我的主窗口)和一个NSWindowBelow具有NSTextView. 子窗口没有标题栏,也没有阴影和透明。
这是我用来设置子窗口以使其透明的代码:

- (id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag{
    if (![super initWithContentRect: contentRect styleMask:NSBorderlessWindowMask backing: bufferingType defer:NO]) return nil;

    [self setBackgroundColor: [NSColor clearColor]];
    [self setOpaque:NO];

    return self;
}

但是当我尝试选择其中的文本时,会发生这种情况(子窗口上方的黑色东西是主窗口):
在此处输入图像描述
看起来NSTextView没有焦点,因为选择不是蓝色的。我试过打电话:[[_childWindow textView] becomeFirstResponder];但结果是一样的。另一件事是,当我滚动它时,有时它非常滞后和“破碎”。

你们对造成这种情况的原因以及如何解决它有任何想法吗?我怀疑这是因为窗口没有标题栏,但我不确定。谢谢!

4

1 回答 1

2

从 NSWindow 文档:

canBecomeKeyWindow
Indicates whether the window can become the key window.

- (BOOL)canBecomeKeyWindow
Return Value
YES if the window can become the key window, otherwise, NO.

Discussion
Attempts to make the window the key window are abandoned if this method returns 
NO. The NSWindow implementation returns YES if the window has a title bar or a 
resize bar, or NO otherwise.

尝试覆盖-canBecomeKeyWindow并返回 YES。

于 2013-05-15T19:51:12.100 回答