gpt4 book ai didi

objective-c - NSTextfield 不接受具有 NSTitledWindowMask 的 NSWindow 上的键事件

转载 作者:行者123 更新时间:2023-12-03 16:56:46 26 4
gpt4 key购买 nike

我已经开始编写 cocoa 应用程序。我使用 initWithContentRect 创建了一个 NSwindow 。我创建了一个 NSTextField。我无法获取任何键盘事件。是可以选择的。我还明确将可编辑设置为 true。我意识到也有类似的问题,但它们主要是关于响应者、关键窗口和无边框窗口样式。

我有一个 NSWindows ,它有一个标题窗口掩码,是关键窗口,当我将其设置为第一响应者时,它被选中。

但是为什么我不能在框中输入任何内容。

int style = NSClosableWindowMask  |NSTexturedBackgroundWindowMask | NSTitledWindowMask | NSMiniaturizableWindowMask;

window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 130, 150)
styleMask:style backing:NSBackingStoreBuffered defer:NO];

CGFloat height=20;
NSTextField * username=[[NSTextField alloc] initWithFrame:NSMakeRect(10, NSHeight(window.frame)-80, 100, height)];
[username setEditable:true];
[window.contentView addSubview:username ];

是不是因为我需要创建NSwindow的子类。我看到当样式为 NSBorderlessWindowMask 并通过覆盖

时建议这样做

canBecomeKeyWindow 建议解决该问题。

但我没有使用NSBorderlessWindowMask

我错过了什么?任何帮助表示赞赏。

最佳答案

根据您的评论,您说您没有 Info.plist 文件。我猜你的应用程序甚至没有捆绑。这是您在问题中遗漏的一个关键事实,这只会让人们很难帮助您。

首先,您应该以正常方式创建应用程序。制作一个带有主 NIB 的捆绑应用程序。遵循标准模板,除了从主 NIB 中删除窗口和 use separate window NIBs .

如果您没有能力了解“手动”构建的应用程序出了什么问题并修复它,那么您真的不应该走这条路。

也就是说,未捆绑的应用程序将作为仅后台进程启动。您所看到的少量交互或多或少是一个错误。您可以通过将应用程序对象(NSApplication 的实例或子类)的 activationPolicy 设置为 NSApplicationActivationPolicyRegular,将应用程序转换为前台应用程序。然后,通过调用 [NSApp activateWithOptions:NSApplicationActivateIgnoringOtherApps] 使其成为事件应用。

关于objective-c - NSTextfield 不接受具有 NSTitledWindowMask 的 NSWindow 上的键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688358/

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