2012-04-05 9 views
14

私はカスタムNSViewを作成し、keyDown:メソッドを実装しました。しかし、キーを押すとメソッドが呼び出されることはありません。これらのイベントを受け取るには登録する必要がありますか?私はドキュメントベースのアプリケーションを作成しており、どこでもこのコードを扱うことができます(このビューにする必要はありません)。アプリケーション全体でイベントが発生するように、ドキュメントベースのアプリケーションでこれを行うには最適な場所は何ですか?Cocoa:NSViewのキーダウンイベントが発射されない

答えて

27

を返すには、-acceptsFirstResponderを上書きする必要があります。スウィフトは

+0

は、私が(ドキュメントベースのアプリケーションでカスタムNSViewの)、そしてちょうどオーバーライドacceptsFirstResponderアスカーと同じ問題を抱えているが、KeyDownイベントはまだ開始されません。もしあなたが何ができるかについて他のアドバイスがあれば、私は永遠に感謝しています! – chm

+1

あなたの意見はウィンドウの最初のレスポンダーだと信じる理由がありますか?ウィンドウが画面上で順序付けされる前にコード内に 'initialFirstResponder'を設定するか、IBで接続することができます。他の時には '-makeFirstResponder:'を使うことができます。また、ウィンドウがキーになることを確認してください。 –

7

class MDView: NSView { 
    override var acceptsFirstResponder: Bool { return true } 
} 
関連する問題