objective-c - 如何在 xcode 中返回击键的值?

标签 objective-c xcode cocoa

我是 cocoa 开发方面的菜鸟,我正在尝试制作一个非常基本的程序,该程序在标签中显示任何按下的键的值,然后在未按下该键时清除。我到处搜索,发现了类似的线程,并在神秘的开发人员库中苦苦挣扎,但我似乎无法让它们工作。任何帮助都会很棒。请记住我是个新人。

我真正需要的是知道什么代码将返回程序运行时按下的键的值。我大概可以从那里弄清楚。

谢谢

编辑- 好的。我已经阅读了几次关于响应者链的 Apple 文档,我想我明白了这个概念。但是,我不明白为什么我的代码不起作用。这是我所拥有的。我想我可以把它放在App Delegate的实现下吗?我只有一个简单的默认应用程序。 NSApplication 应该将 keyDown 事件传递给应用程序委托(delegate),并且由于它是第一响应者,所以它应该读取 key 并记录它,对吧?正如你所知,我可能还没有完全理解事件是如何运作的。任何帮助都会很棒。

- (BOOL)acceptsFirstResponder {
    return YES;
}

- (void)keyDown:(NSEvent *)theEvent
{

    NSString *key = [theEvent characters];


    NSLog(@"keyDown [%@]", [theEvent characters]);
}

最佳答案

无论第一响应者是什么对象,都需要实现 -(void)keyDown:(NSEvent *)theEvent-(void)keyUp:(NSEvent *)theEvent。您可以使用 -(NSString *)characterNSString 的形式从事件中获取字符。如果您的应用程序中只有一个窗口并设置其 Controller 来实现上述方法,只要您的窗口中没有其他东西来处理事件,它就应该可以工作。

关于objective-c - 如何在 xcode 中返回击键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901065/

相关文章:

objective-c - 单例设计实现

ios - ios 8 中的 voip 应用程序是否有新要求?

swift - 在另一个 TableView 上调用 dismiss() 后刷新 TableView 数据

xcode - 如何在 XCode 4 的 i386 应用程序的 dylib 中使用 Sqlite?这种方法确实适用于 iPhone 应用程序

objective-c - Cocoa/Objective-C Shell 命令行执行

objective-c - 如何将 UIButton 属性绑定(bind)到另一个属性?

ios - 错误 ITMS-90171 : "Invalid Bundle Structure The binary file APP. 不允许应用程序/libswiftRemoteMirror.dylib

objective-c - 如何提取 NSArray 的元素并将它们(parseInt)转换为整数值?

objective-c - 调整 NSWindow 的大小以适应新的 NSViews 会导致 View 绘制不正确

objective-c - 如何使用平移手势旋转文本字段?