我在swift OS X应用程序中使用NSTextView。当用户按下ctrl +向上箭头时会发生一些事情。
我是通过覆盖NSTextView onKeyDown函数来实现的。
我的代码看起来像这样。
class MyTextView: NSTextView {
override func keyDown(with event: NSEvent) {
//NSLog(“event.keyCode=\(event.keyCode),modifierFlags=\(event.modifierFlags)”)
// Do something on Alt + Up
if event.keyCode == 126 && event.modifierFlags.rawValue == 11010336 {
// Do something…
}
}
这样可行,但是当大写锁定键打开时,它会停止工作。 我猜是因为event.modifierFlags.rawValue不再等于1010336。
我的问题是 - 是否有更优雅的方法来捕捉Alt +向上箭头,即使然后指定event.modifierFlags.rawValue == 11010336以及大写锁定开启时的事件值?
答案 0 :(得分:1)
是的,有一种更优雅的方式:
if event.keyCode == 126 && event.modifierFlags.contains(.control) {
或⌥键
if event.keyCode == 126 && event.modifierFlags.contains(.option) {
答案 1 :(得分:0)
另一种方式:覆盖moveToBeginningOfParagraph:
。
答案 2 :(得分:0)
以@Willeke的答案为基础,我认为正确的方法是为文本视图链接NSTextViewDelegate,然后处理以下问题。
func textView(_ textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool
{
if commandSelector == #selector(textView.moveToBeginningOfParagraph(_:))
{
// Do something and tell the view you have handled it
return true
}
return false // You haven't handled anything else
}