Swiftでは、キーボードキーがヒットしたことを登録できるように、プレスを処理する機能がCocoaフレームワークにありますか?エスケープキープレスイベントの処理方法は?
私はエスケープキーを取得したいのですが
更新: 理由を仕事に ウィッヒが事のために必要されていません。私はただの雑音が(イベントで) super.keyDownでcasuedたことがわかっ その行を追加しましたか?
Swiftでは、キーボードキーがヒットしたことを登録できるように、プレスを処理する機能がCocoaフレームワークにありますか?エスケープキープレスイベントの処理方法は?
私はエスケープキーを取得したいのですが
更新: 理由を仕事に ウィッヒが事のために必要されていません。私はただの雑音が(イベントで) super.keyDownでcasuedたことがわかっ その行を追加しましたか?
はNSWindow
のサブクラスを作成し、keyDown
イベントを実装:
import Cocoa
import Carbon.HIToolbox
class CustomWindow: NSWindow {
override func keyDown(with event: NSEvent) {
switch Int(event.keyCode) {
case kVK_Escape:
print("Esc pressed")
default:
break
}
super.keyDown(with: event)
}
}
この行を:
import Carbon.HIToolbox
を使用すると、kVK_Escape
などのキーのための便利な定数を使用できます。
Interface Builderであなたのメインウィンドウクラスとしてこのクラスを設定し、あなたはすべてのセットだ:
P.S. viewDidLoad
で、同じフォームNSViewController
を行うには、実行します。
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
P.P.S.を
default:
super.keyDown(with: event)
をEDIT:
何かが上に聞こえるしたくない場合は、デフォルトのスーパーコールを動かす - 「ビッグバン」の音をミュートするには、エスケープキーを押し時にスーパーを呼び出すことはありません。キーを押して脱出、次のアプローチを使用する必要があります。
がNSView
サブクラスを作成し、ビューコントローラのメインビューに設定します。
import Cocoa
import Carbon.HIToolbox
class CustomView: NSView {
override func performKeyEquivalent(with event: NSEvent) -> Bool {
switch Int(event.keyCode) {
case kVK_Escape:
print("Esc pressed")
return true
default:
return super.performKeyEquivalent(with: event)
}
}
}
awsome nswer、メインのviewcontrolerからオーバーライド機能を実行することは可能でしょうか? –
また、私は私のアプリでエスケープすると、それはバングサウンドは、それをオフにする方法はありますか? –
スーパーが呼び出されているため、「バング」サウンドが再生されます。 'super.keyDown(with:event)'という行をデフォルトの実装にすることができます。これにより、Escapeキーを押したときに呼び出されるのを避けることができます。 – Hexfire