可可 – 如何关注从NIB加载的NSWindow?

可可 – 如何关注从NIB加载的NSWindow?,第1张

概述我正在使用NSWindowController从NIB加载窗口.但是,当我调用showWindow:时,窗口在视觉上是最顶层的,但焦点保持原样(而不是将其移动到新窗口). 在创建新窗口(通过cmd n)之前,第一个窗口(带键盘焦点)稍微移动时,很容易看到这种情况发生.这是结果: 底部聚焦窗口是原始窗口.顶部未聚焦的窗口是新创建的窗口. 这是相关代码: AppDelegate.h: - (IBAct 我正在使用NSWindowController从NIB加载窗口.但是,当我调用showWindow:时,窗口在视觉上是最顶层的,但焦点保持原样(而不是将其移动到新窗口).

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

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

这是相关代码:

AppDelegate.h:

- (IBAction)newdocument:(ID) sender;

AppDelegate.m:

- (IBAction)newdocument:(ID) sender {    [[[FooController alloc] init] showWindow:self];}- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification {    [self newdocument:self];}

FooController.h:

@interface FooController : NSWindowController { }@end

FooController.m:

- (ID)init {    self = [super initWithWindowNibname:@"FooWindow"];    return self;}

FooWindow.xib:
一个新创建的Window xib,无需修改.

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

调用makeKeyAndOrderFront:在控制器windowDIDLoad方法的窗口上似乎没有聚焦新窗口.将file的FooWindow.xib所有者设置为FooController似乎也没有帮助.

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

编辑:看起来NSWindowController的窗口方法返回nil,这解释了为什么在窗口上调用方法不做任何事情.但为什么它没有?

解决方法 好的,我找到了这个问题的原因.

必须将xib的file所有者设置为控制器,并且(这是我不知道的部分)您必须将控制器的窗口连接到窗口本身.

完成后,它只是工作.没有makeKeyWindow,makeMainWindow或makeKeyAndOrderFront:需要.

总结

以上是内存溢出为你收集整理的可可 – 如何关注从NIB加载的NSWindow?全部内容,希望文章能够帮你解决可可 – 如何关注从NIB加载的NSWindow?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1007463.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存