【发布时间】:2014-02-28 23:39:30
【问题描述】:
当用户编辑NSTextField 时,我希望能够处理三种不同的组合键:
- ↩
- ⌘↩
- ⇧↩
每种组合都会有不同的反应。
理想情况下,我想仅通过 IB 来实现这一目标。但是,我的理解是 Cocoa 只允许每个控件发送一个操作。
我可以将此发送的操作绑定到 IBAction 并将 NSTextField 设置为仅在按下返回键时发送它,但我无法找到当前按住哪些修饰键的方法(如该操作仅接收(id)sender,而不是事件对象)。这可能吗?
或者,我想可以继承NSTextField,覆盖keyDown:,然后手动运行适当的操作。但是,我想不出如何在 IB 中正确连接它。 (我可以为目标使用IBOutlet,但我想不出一种连接特定方法的方法。)我也担心这种方法的效率。
在NSTextField 上处理某些关键事件的正常方式是什么?
我目前倾向于的方法是编写自定义协议并在文本字段子类上放置一个出口:
@property (weak, nonatomic) IBOutlet id<TextFieldReturnHandler> target
然后可以从按键事件中调用。不过,这似乎真的很令人费解。
【问题讨论】:
标签: objective-c cocoa nstextfield