小编Zr4*_*r40的帖子

如何关注从NIB加载的NSWindow?

我正在使用NSWindowController从NIB加载窗口.但是,当我调用时showWindow:,窗口在视觉上是最顶层的,但焦点仍然保持原样(而不是将其移动到新窗口).

在创建新窗口(通过cmd + n)之前,第一个窗口(具有键盘焦点)稍微移动时,很容易看到这种情况发生.这是结果:

底部聚焦窗口是原始窗口.顶部未聚焦的窗口是新创建的窗口.

这是相关代码:

AppDelegate.h:

- (IBAction)newDocument:(id) sender;
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m:

- (IBAction)newDocument:(id) sender {
    [[[FooController alloc] init] showWindow:self];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [self newDocument:self];
}
Run Code Online (Sandbox Code Playgroud)

FooController.h:

@interface FooController : NSWindowController { }
@end
Run Code Online (Sandbox Code Playgroud)

FooController.m:

- (id)init {
    self = [super initWithWindowNibName:@"FooWindow"];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

FooWindow.xib:
一个新创建的Window xib,没有修改.

MainMenu.xib:
默认的MainMenu.xib,其窗口已删除.

makeKeyAndOrderFront:在控制器windowDidLoad方法中调用窗口似乎不会聚焦新窗口.将文件的FooWindow.xib所有者设置为似乎FooController也没有帮助.

从NIB加载和显示窗口的正确方法是什么,以便它确实接收键盘焦点?

编辑:它看起来像NSWindowControllerwindow方法的返回值nil,这就解释了为什么调用方法window没有做任何事情.但为什么呢nil

cocoa nswindow nswindowcontroller

4
推荐指数
1
解决办法
4151
查看次数

标签 统计

cocoa ×1

nswindow ×1

nswindowcontroller ×1