Playground中的鼠标事件(NSTrackingArea)无法正常工作

时间:2015-12-23 19:03:28

标签: xcode swift swift-playground

我有一个NSView的子类,它包含以下NSTrackingArea代码。但由于某种原因,鼠标事件不会在Playground中触发。

正在调用viewWillMoveToWindow,但似乎没有其他事情可以解决。有没有人知道遗失的是什么?

class MyView: NSView {

    private var trackingArea: NSTrackingArea    = NSTrackingArea()

    // Other stuff omitted here...
    // ...

    override func viewWillMoveToWindow(newWindow: NSWindow?) {

        // Setup a new tracking area when the view is added to the window.
         trackingArea = NSTrackingArea(rect: self.bounds, options: [.MouseEnteredAndExited, .ActiveAlways], owner: self, userInfo: nil)
         self.addTrackingArea(trackingArea)
    }
    override func updateTrackingAreas() {

          self.removeTrackingArea(trackingArea)

          trackingArea = NSTrackingArea(rect: self.bounds, options: [.MouseEnteredAndExited, .ActiveAlways], owner: self, userInfo: nil)
          self.addTrackingArea(trackingArea)
    }

    // Mouse events
    override func mouseEntered(theEvent: NSEvent) {

         NSLog("MouseEntered")
    }
     override func mouseExited(theEvent: NSEvent) {

         NSLog("MouseExited")
    }
     override func mouseDown(theEvent: NSEvent) {

         NSLog("MouseDown")
    }
}

1 个答案:

答案 0 :(得分:1)

根据this 2014年WWDC会议:

  

Playgrounds的限制更多。   游乐场不能用于需要用户交互的事物。   因此,我们非常支持显示实时视图,但您只能看到它们,您无法触及它们。

您可以找到原始视频here