title: keyDown doesn't work swift
body: <p>That's my code: </p>
  
  <pre><code>override func keyDown(theEvent: NSEvent) {
      super.keyDown(theEvent)
      switch theEvent.character {
      case NSLeftArrowFunctionKey:
          println(1)
      case NSRightArrowFunctionKey:
          println(2)
      case NSDownArrowFunctionKey:
          println(3)
      case NSUpArrowFunctionKey:
          println(4)
      default:
          break
      }
  }
  </code></pre>
  
  <p>As you can see, I try to recognize if one of arrow buttons was pressed, but it never works. Even the function keyDown never seems to be called.</p>
  
  <p>That's what is written in <code>viewDidAppear</code>, if this can help you to provide the answer:</p>
  
  <pre><code>override func viewDidAppear() {
      super.viewDidAppear()
      self.view.window?.styleMask = NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask
      var frame = self.view.window?.frame
      var newHeight = CGFloat(438)
      var newWidth = CGFloat(415)
      frame?.size = NSMakeSize(newWidth, newHeight)
      self.view.window?.setFrame(frame!, display: true)
      self.view.window?.backgroundColor = NSColor.darkGrayColor()
  }
  </code></pre>
  
  <p>In <code>viewDidLoad</code> I just add some non-selectable and non-editable NSTextFields like that:</p>
  
  <pre><code>var x = CGFloat(0)
      var y = CGFloat(0)
      var tag = 1
  
      for var i = 0; i &lt; 4; i++ {
          for var j = 0; j &lt; 4; j++ {
              var tile = NSTextField(frame: NSRect(x: x, y: y, width: 100, height: 100))
              tile.enabled = false
              tile.stringValue = ""
              tile.font = NSFont(name: "Helvetica", size: 75)
              tile.backgroundColor = NSColor.lightGrayColor()
              tile.editable = false
              tile.selectable = false
              tile.drawsBackground = true
              tile.alignment = NSTextAlignment(rawValue: 2)!
              tile.tag = tag
              x += 105
              ar.append(tile)
              self.view.addSubview(tile)
              tag++
          }
          x = 0
          y += 105
      }
  </code></pre>
  
  <p>I just have no idea why <code>keyDown</code> doesn't work, so I'll really appreciate any help.</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>The whole class code:</p>
  
  <pre><code>import Cocoa
  import AppKit
  import Foundation
  
  class _048Main: NSViewController {
  
  var ar : Array&lt;NSTextField&gt; = []
  var left = 0
  
  var dict : Dictionary&lt;Int, NSColor&gt; = [:]
  
  var pic2 = NSColor.redColor()
  var pic4 = NSColor.whiteColor()
  var pic8 = NSColor.orangeColor()
  var pic16 = NSColor.magentaColor()
  var pic32 = NSColor()
  var pic64 = NSColor()
  var pic128 = NSColor()
  var pic256 = NSColor() // Some colors will be added
  var pic512 = NSColor()
  var pic1024 = NSColor()
  var pic2048 = NSColor()
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      dict[2] = pic2
      dict[4] = pic4
      dict[8] = pic8
      dict[16] = pic16
      dict[32] = pic32
      dict[64] = pic64
      dict[128] = pic128
      dict[256] = pic256
      dict[512] = pic512
      dict[1024] = pic1024
      dict[2048] = pic2048
  
      var x = CGFloat(0)
      var y = CGFloat(0)
      var tag = 1
  
      for var i = 0; i &lt; 4; i++ {
          for var j = 0; j &lt; 4; j++ {
              var tile = NSTextField(frame: NSRect(x: x, y: y, width: 100, height: 100))
              tile.enabled = false
              tile.stringValue = ""
              tile.font = NSFont(name: "Helvetica", size: 75)
              tile.backgroundColor = NSColor.lightGrayColor()
              tile.editable = false
              tile.selectable = false
              tile.drawsBackground = true
              tile.alignment = NSTextAlignment(rawValue: 2)!
              tile.tag = tag
              x += 105
              ar.append(tile)
              self.view.addSubview(tile)
              tag++
          }
          x = 0
          y += 105
      }
      left = 16
      generateTile()
      generateTile()
  }
  
  func generateTile() {
      var r = Int(arc4random_uniform(UInt32(left)))
      var tmp = 0
      for var i = 0; i &lt; 16; i++ {
          if ar[i].stringValue == "" {
              if tmp == r {
                  var t = Int(arc4random_uniform(10))
                  switch t {
                  case 0...1:
                      ar[i].stringValue = "2"
                      ar[i].backgroundColor = pic2
                  default:
                      ar[i].stringValue = "4"
                      ar[i].backgroundColor = pic4
                  }
                  left--
                  break
              }
              tmp++
          }
      }
  }
  
  override func viewDidAppear() {
      super.viewDidAppear()
      self.view.window?.styleMask = NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask
      var frame = self.view.window?.frame
      var newHeight = CGFloat(438)
      var newWidth = CGFloat(415)
      frame?.size = NSMakeSize(newWidth, newHeight)
      self.view.window?.setFrame(frame!, display: true)
      self.view.window?.backgroundColor = NSColor.darkGrayColor()
  }
  
  
  override func keyDown(theEvent: NSEvent) {
      super.keyDown(theEvent)
      switch theEvent.character {
      case NSLeftArrowFunctionKey:
          println(1)
      case NSRightArrowFunctionKey:
          println(2)
      case NSDownArrowFunctionKey:
          println(3)
      case NSUpArrowFunctionKey:
          println(4)
      default:
          super.mouseDown(theEvent)
      }
  }
  
  }
  </code></pre>