2016-04-28 10 views
0

Uキーが押されたかどうかを検出しようとしていますが、それがprint("BUT...BUT..");である必要がありますが、別のキーを確認する方法がわかりません。キーを押すために非常に悪い..ですuキーが押されていないか確認してください。Swift Cocoa

Foo.swift私は、キーコードとの答えが見つかりましたが、彼らは唯一のQWERTYキーボード用

viewcontroller.swift

override func viewDidLoad(){ 
    super.viewDidLoad(); 
    let f = Foo(); 
    f.doSonethimg(); 
} 

override func keyDown(theEvent: NSEvent){ 
    let f = Foo(); 
    f.KeyDown(theEvent); 
} 

を働きます

public func doSonething(){ print("Hello from Dylib"); } public func keyDown(event: NSEvent){ if let keyString = theEvent.charactersIgnoringModifiers where keyString == "u" || keyString == "U" { Swift.print("BUT...BUT…") } } 

keyDownの機能をUに変更するにはどうすればよいですか?デフォルトのキーは何ですか?

私が見てきた

からDetecting key press event in Swifthttps://superuser.com/questions/399430/mouse-button-and-keypress-counter-for-mac-os-x

も参照 - https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.htmlを - KeyDownイベントをオーバーライドします。方法

+1

ファンクションキー(Fキー)の動作がシステム環境設定 – vadian

+0

の設定に依存することを考慮してください。ありがとうございます。私の質問に応じて更新します – Gerwin

+1

NSEventのドキュメントをお読みですか? NSEventには、「文字」のようなキーイベント情報を取得するためのメソッドがあります。キーダウンイベントにはデフォルトキーがありません。 – Willeke

答えて

4

あなたは簡単にNSEventcharactersIgnoringModifiersプロパティを使用して文字を確認することができます。

func keyDown(theEvent: NSEvent) { 
    if let keyString = theEvent.charactersIgnoringModifiers where keyString == "u" || keyString == "U" { 
     Swift.print("BUT...BUT…") 
    } 
} 

注: 'u'と 'U'のチェックに違いがあります。それらはシフトによって変更されます。両方を認識したい場合は、両方を確認してください。 (上記の例のように)

レスポンダチェーン
ビューまたはのViewControllerそうResponder Chainと呼ばれるに参加したときのKeyDown関数のみ呼び出されます。

レスポンダチェーンの一部としてviewControllerを設定するには、次のようにdocumentationを読んでください。

+0

私のviewcontrollerのkeyDownイベントは呼び出されないので、なぜこれが入力されないのでしょうか? – Gerwin

+0

私の回答を更新しました – mangerlahn

関連する問題