首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPanel未成为关键窗口

NSPanel未成为关键窗口
EN

Stack Overflow用户
提问于 2012-07-20 20:36:29
回答 1查看 729关注 0票数 0

我有一个NSPanel,我想将它设置为keyWindow,以便它应该发布NSWindowDidBecomeKeyNotification,但是,即使在调用makeKeyWindow方法时,通知也没有发布。下面是我的代码,但我不知道它有什么问题:

代码语言:javascript
复制
newPanel = [[NSPanel alloc]initWithContentRect:windowRect
                                         styleMask:NSUtilityWindowMask
                                           backing:NSBackingStoreBuffered 
                                             defer:FALSE];

    [[NSNotificationCenter defaultCenter]addObserver:self 
                                            selector:@selector(test:) 
                                                name:@"NSWindowDidBecomeKeyNotification" 
                                              object:newPanel];
    // Create a slider and add to the panel
    NSSlider *slider = [[NSSlider alloc]initWithFrame:NSMakeRect(0, 0, windowRect.size.width, windowRect.size.height)];
    [[newPanel contentView]addSubview:slider];
    // Set window attributes
    [newPanel setHasShadow:TRUE];
    [newPanel setFloatingPanel:TRUE];
    [newPanel setReleasedWhenClosed:TRUE];
    [newPanel setHidesOnDeactivate:TRUE];
    [newPanel setBecomesKeyOnlyIfNeeded:NO];
    [newPanel makeKeyWindow];
    [newPanel makeFirstResponder:slider];
    [newPanel orderFront:sender];

现在,当我调用[newPanel makeKeyWindow];时,应该发送NSWindowDidBecomeKeyNotification,并且应该调用-(void)test:(NSNotification*)aNotification。但它没有被调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 00:02:50

我将您的代码复制并粘贴到一个新项目中,但它甚至没有显示面板,是不是?我可以通过创建一个属性thePanel (编译器不喜欢newPanel这个名字,不知道为什么)并将thePanel的所有引用都改为self.thePanel来使其工作。另外,我将NSTitledWindowMask添加到样式掩码参数(styleMask:NSUtilityWindowMask | NSTitledWindowMask)中,并将makeKeyWindow命令移到orderFront命令之后,或者将这两个命令替换为makeKeyAndOrderFront:self.window。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11579531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档