如何将NSControl
对象(例如NSImageView
)子类化以检测按下删除键?具体来说,我想清除NSImageView
中的图像,但可能有更广泛的应用。
答案 0 :(得分:3)
对NSControl
进行子类化并覆盖keyDown
函数。使用NSEvent.charactersIgnoringModifiers检查NSDeleteCharacter
的unicode值。
override func keyDown(theEvent: NSEvent) {
//From Apple sample code: https://developer.apple.com/library/ios/samplecode/Lister/Listings/Swift_ListerOSX_ListViewController_swift.html
if theEvent.charactersIgnoringModifiers == String(Character(UnicodeScalar(NSDeleteCharacter))) {
//Take action.
}
}
答案 1 :(得分:2)
它应该只是实现-delete:
操作方法,这是编辑菜单的删除项发送到响应者链的方法。这样,它不仅适用于Delete键,还适用于调用该菜单项的所有其他方式(鼠标,将焦点放在菜单上,按箭头键,辅助功能等进行导航)。
事实上,NSImageView
已经实现了-delete:
,所以你确定你必须做任何事情吗?