【问题标题】:Best way to detect Enter/Return key in cocoa application?在可可应用程序中检测 Enter/Return 键的最佳方法?
【发布时间】:2013-02-05 10:25:32
【问题描述】:

在我的可可应用程序中,我需要检查输入/返回键。为此我使用了以下代码

if ((event.keyCode == 36) || (event.keyCode == 76) || (event.keyCode == 13))
{
// Some code after checking Enter key
}

任何人都可以建议这是正确的方法吗? 提前致谢:)

【问题讨论】:

  • 那么,返回还是输入还是W?

标签: cocoa nsview nstextview nsevent


【解决方案1】:

方法不太正确——您将键码与字符码混淆了。正如 Peter Hosey 在他的评论中指出的那样,13 是 W 键的 key 代码。

也就是说,if ((event.keyCode == 36) || (event.keyCode == 76)) 检查 key 代码是否为 Return 或 Enter 键。

如果您想检查 字符 代码,那么您可以执行以下操作:

NSString *chars = event.charactersIgnoringModifiers;
unichar aChar = [chars characterAtIndex: 0];
if (aChar == 13 || aChar == 3)

……你会得到同样的效果。

【讨论】:

  • 它可能更容易使用:unichar aChar = [[event charactersIgnoringModifiers] characterAtIndex:0];而不是前两行代码,以防您对 shift 状态或 Apple 键等不感兴趣...
  • 好点 @Todd -- 编辑为使用 charactersIgnoringModifiers 代替。
  • “键码”和“字符码”到底有什么区别?
  • 键码是键盘上键的物理位置。例如。在美式 QWERTY 键盘上,“Y”的键码是 16。在德式 QWERTZ 键盘上,Y 键和 Z 键互换,因此键码 16 用于“Z”键,而“Y”键具有关键代码 6. 如果您有兴趣,关键代码很有用,例如WASD 作为箭头键的替代品。因为例如在法语 AZERTY 键盘上,您想使用 ZQSD 来获得相同的物理排列。字符代码 OTOH 是印在键帽上的实际字符,无论它们实际出现在键盘的哪​​个位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2011-07-30
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多