gpt4 book ai didi

ios - Objective-c-键盘输入

转载 作者:行者123 更新时间:2023-11-29 02:41:13 29 4
gpt4 key购买 nike

我相信我已经阅读了所有与键盘输入相关的文章,但仍然无法正常工作。我想要的只是一个输出,每次我按下一个键时都使用 NSLog,无论是否在应用程序中。我目前正在使用 xcode 5。我尝试了许多代码片段,例如

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
NSLog(@"%@",event.characters);

而且我不确定将他的代码放在哪里。像这样放在main函数里吗

 #import <Foundation/Foundation.h>
#import <appkit/NSEvent.h>

int main(int argc, char * argV[]) {
@autoreleasepool{
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
NSLog(@"%@",event.characters);
}
}

显然我是 Objective-C 的新手,除非我可以让键盘输入正常工作,否则我不打算继续使用它。我试过教程、键盘记录器的片段和 mac 开发论坛。谢谢。

最佳答案

您的代码非常接近,但您被 block 语法挂断了。 block 非常强大和有用,但语法真的很糟糕,在开始使用它们 2 年后我仍然在为它而苦苦挣扎。 block 的可读性远不如 C 函数指针,这说明了很多。

它应该是这样的:

int main(int argc, char * argV[]) 
{
@autoreleasepool
{
[NSEvent addGlobalMonitorForEventsMatchingMask: NSKeyDownMask
handler: ^(NSEvent *event)
{
NSLog(@"%@",event.characters);
}
];
}
}

为了清楚起见,我将所有的左大括号和右大括号放在不同的行中。一个 block 需要用大括号括起来,而您缺少大括号以及调用 addGlobalMonitorForEventsMatchingMask:handler:

时的右括号

顺便说一句,在 Mac 或 iOS 程序上更改 main() 函数是非常不寻常的。通常你不去管它,然后设置一个应用程序对象,设置一个委托(delegate),并将你的自定义代码放在应用程序委托(delegate)中。

您应该开始为应用程序使用普通的 Cocoa 设计模式,而不是尝试折腾它们。

如果您想以 C 风格使用 main(),您应该考虑创建一个用于交互式应用程序的命令行工具。如果您不遵循标准模式,您将注定失败。出错的方法太多了。

您的 main 缺少创建工作 iOS 或 Mac 应用程序所需的内务管理

关于ios - Objective-c-键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776711/

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