Swift没有KeyDown工作

时间:2014-12-20 09:06:11

标签: swift nsview keydown

我在课程NSView覆盖了keyDown方法,但I don't get any action

这就是我的代码的样子:

class Rotund: NSView {

var numar: Int = 0 {
    didSet {
        self.needsDisplay = true
    }
}

override func drawRect(dirtyRect: NSRect) {
    super.drawRect(dirtyRect)
        drawCanvas1(number: CGFloat(numar), x: 0)
}
func drawCanvas1(#number: CGFloat, x: CGFloat) {
    //// Color Declarations
    let color = NSColor(calibratedRed: 0.98, green: 0.008, blue: 0.008, alpha: 1)

    //// Oval Drawing
    let ovalPath = NSBezierPath(ovalInRect: NSMakeRect(x, 34, number, number))
    color.setFill()
    ovalPath.fill()
}    
override func keyDown(theEvent: NSEvent) {
    if theEvent.keyCode == 124 {
        println("abc")
        } else {
            println("abcd")
    }
}

有人可以帮我弄清楚我该怎么做?

2 个答案:

答案 0 :(得分:0)

只需确认...在您的代码中,您似乎已经覆盖了KeyUp。也许,您应该尝试将其更改为:

override func keyDown(theEvent: NSEvent) {
if theEvent.keyCode == 124 {
    println("abc")
} else {
    println("abcd")

}

答案 1 :(得分:0)

您已覆盖keyUp方法而非keyDown

请从

更改您的代码
override func keyUp(theEvent: NSEvent) {
if theEvent.keyCode == 124 {
    println("abc")
    } else {
        println("abcd")
}

覆盖

override func keyDown(theEvent: NSEvent) {
if theEvent.keyCode == 124 {
    println("abc")
    } else {
        println("abcd")
}

希望有所帮助。 如果没有,请在下面评论,谢谢。