Использование клавиш со стрелками для игры SceneKit в Swift

Я пытаюсь создать быстрый файл, который быстро обнаружит ввод с клавиатуры из MacOS для игры SceneKit. Я использую NSEvent для обработки ключевых событий, но продолжаю получать сообщение об ошибке необъявленного типа NSEvent. Есть ли более простой способ добиться этого?

Я пробовал следующий код:

override func keyDown(event: NSEvent) {
    interpretKeyEvents([event]) // calls insertText(_:), moveUp(_:), etc.
}

override func insertText(insertString: AnyObject) {
    let str = insertString as! String
    switch str {
    case " ":
        println("User hit the spacebar.")
    default:
        println("Unrecognized input: \(str)")
    }
}

override func moveUp(sender: AnyObject?) {
    println("Up arrow.")
}

override func moveLeft(sender: AnyObject?) {
    println("Left arrow.")
}

override func deleteBackward(sender: AnyObject?) {
    println("Delete.")
}

person Leke Abolade    schedule 07.08.2015    source источник
comment
ты import Cocoa?   -  person mnuages    schedule 07.08.2015


Ответы (2)


Это будет работать:

override func keyDown(theEvent: NSEvent) {
    let keyCode = theEvent.keyCode if(keyCode == 123)//Left{
    }
    if(keyCode == 124)//Right
    {
    }
    if(keyCode == 125)//Down
    {
    }
    if(keyCode == 126)//Up
    {
    }
person Roger O'Brien    schedule 31.10.2015

Это обновление (2020 г.) к QA, заданному в (2015 г.).

override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
guard let key = presses.first?.key else { return }

switch key.keyCode {
case .keyboardR:
    print("Roll dice")
case .keyboardH:
    print("Show help")
default:
    super.pressesBegan(presses, with: event)
}

}

person Justin Ngan    schedule 19.08.2020