2

如何子类化一个NSControl对象(例如 a NSImageView)以检测删除键的按下?具体来说,我想从 a 中清除图像NSImageView,但可能有更广泛的应用。

4

2 回答 2

6

子类化NSControl并覆盖keyDown函数。使用 NSEvent.charactersIgnoringModifiers 检查NSDeleteCharacter.

    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. 

        }
     }
于 2016-02-21T17:16:12.067 回答
2

它应该只实现-delete:action 方法,这是 Edit 菜单的 Delete 项发送到响应者链的内容。这样,它不仅适用于 Delete 键,还适用于调用该菜单项的所有其他方式(鼠标、将焦点放在菜单上以及通过箭头键导航、可访问性技术等)。

事实上,NSImageView已经实现了-delete:,所以你确定你必须做些什么吗?

于 2016-02-21T21:17:46.677 回答