gpt4 book ai didi

objective-c - NSPanel 没有成为关键窗口

转载 作者:行者123 更新时间:2023-12-03 17:57:05 26 4
gpt4 key购买 nike

我有一个 NSPanel,我想将其设置为 keyWindow ,以便它应该发布 NSWindowDidBecomeKeyNotification 但是,即使调用 makeKeyWindow 方法,通知未发布。下面是我的代码,但我无法弄清楚它出了什么问题:

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 。但它没有被调用。

最佳答案

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

关于objective-c - NSPanel 没有成为关键窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com