我有一个nsview的子类,它包含以下nstrackingarea代码。但由于某种原因,鼠标事件不会在操场上触发。
正在调用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")
    }
}

最佳答案

根据2014年世界野生动物保护委员会会议:
游乐场几乎没有其他限制。
游乐场不能用于需要用户交互的东西。
所以我们非常支持显示实时视图,但您只能看到它们,不能触摸它们。
您可以找到原始视频this

关于xcode - Playground中的鼠标事件(NSTrackingArea)无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34442116/

10-09 19:20