Ios 目标c键盘输入

Ios 目标c键盘输入,ios,objective-c,macos,input,keyboard,Ios,Objective C,Macos,Input,Keyboard,我相信我看过了每一篇关于键盘输入的文章,但仍然无法让它发挥作用。我想要的只是一个输出,无论是否在应用程序中,每次我按键时都使用NSLog。我目前正在使用xcode 5。我试过很多代码片段,比如 [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event) NSLog(@"%@",event.characters); 我不知道他的密码放在哪里。我把它放在像这样的主函数中吗 #

我相信我看过了每一篇关于键盘输入的文章,但仍然无法让它发挥作用。我想要的只是一个输出,无论是否在应用程序中,每次我按键时都使用NSLog。我目前正在使用xcode 5。我试过很多代码片段,比如

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
    NSLog(@"%@",event.characters);
我不知道他的密码放在哪里。我把它放在像这样的主函数中吗

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

int main(int argc, char * argV[]) {
@autoreleasepool{
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
    NSLog(@"%@",event.characters);
 }
}
#导入
#进口
int main(int argc,char*argV[]){
@自动释放池{
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask处理程序:^(NSEvent*事件)
NSLog(@“%@”,事件字符);
}
}

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

你的代码非常接近,但你对块语法很感兴趣。块非常强大和有用,但语法确实很糟糕,我仍然不知道在开始使用它们2年后,就开始使用它了。块的可读性远不如C函数指针,这说明了很多

应该是这样的:

int main(int argc, char * argV[]) 
{
  @autoreleasepool
  {
    [NSEvent addGlobalMonitorForEventsMatchingMask: NSKeyDownMask 
            handler: ^(NSEvent *event)
      {
        NSLog(@"%@",event.characters);
      }
    ];
  }
}
为了清晰起见,我将所有的开始括号和结束括号放在单独的行中。一个块需要用括号括起来,而您在调用
addGlobalMonitorForEventsMatchingMask:handler:

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

您应该开始为应用程序使用普通的Cocoa设计模式,而不是试图抛弃它们

如果你想使用C风格的main(),你应该考虑创建一个交互式应用程序的命令行工具。如果你不遵循标准模式,你会把自己设置为失败。出错的方法太多了


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

这段代码到底有什么问题?我在[NSEvent AddGlobalMonitor…行,但是弄乱了它,使用代码片段,它似乎给出了相同的错误,或者没有错误,只是构建失败了。非常感谢。我只是想看看在目标C中这样做有多困难,这就是为什么要将它放在主方法中,但出于某种原因,我仍然得到一个构建失败,没有错误显示任何错误的行。在左侧,我得到一个“\u OBJC\u CLASS\u$\ u NSEvent”,引用自:error和一个链接器命令失败,退出代码为1(使用-v查看调用),这似乎使构建失败。我还应该将代码放一会儿(true),谢谢。