
在创建新窗口(通过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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)