dyycdyyc 2018-01-08 12:29 采纳率: 0%
浏览 1519
已结题

Cocoa窗口无法捕获键盘事件

MacOS下的objc开发,需要捕获并处理键盘事件。

在网上查资料/看文档得知键盘事件是NSWindow从系统那里接到后分发给NSView的,跟QT一样重写一下事件函数就行。
但问题是……
新建一个新工程(使用Storyboard)之后,窗体设计那里可以看到自动创建了一个Window Controller和View Controller,有一个匿名的View在里面。其他控件可以直接往View Controller里拖,代码全部可以在ViewController类里实现。
那View的代码在哪呢……
我连这个View的类/变量在哪定义的都找不到……更别说继承类重写keyDown事件了

看到ViewController里面也有个keyDown,重写一下发现根本不触发。
我甚至重写了performKeyEquivalent,一点动静都没有,不执行这个函数。
但是重写mouseDown就有反应……有毒。

在stackoverflow上看到有人说用NSEvent的addLocalMonitorForEvents实现,然后事件是有了,但它是全局事件啊……我只想要一个ViewController下的事件……

问下这键盘事件到底要怎么捕获?

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-01-08 13:36
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题