2015-12-23 72 views
2

我有一個NSView的子類,它包含以下NSTrackingArea代碼。但由於某些原因,鼠標事件不會在Playground中觸發。遊戲場中的鼠標事件(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") 
    } 
} 
+0

爲什麼你不和一個真實的項目測試嗎?或者嘗試導入XCPlayground XCPlaygroundPage.currentPage.needsIndefiniteExecution = true –

+0

我知道它在一個真實的項目中起作用,但想要使用Playground來測試一些繪圖工作。 'XCPlaygroundPage.currentPage.needsIndefiniteExecution = true'沒有成功。 XCPlayground已經被導入。 – d00dle

回答

1

根據this 2014 WWDC會議:

很少有與操場更多的限制。 遊樂場不能用於需要用戶互動的事物。 因此,我們非常支持展示實時視圖,但您只能看到它們,不能觸摸它們。

您可以找到原始視頻here

+0

這證實了我的懷疑。感謝您的挖掘:-) – d00dle

+0

似乎這是現在可能,因爲Xcode 7.3測試版:http://ericasadun.com/2016/01/26/xcode-7-3-beta-2-introduces-live-interactive-playgrounds / – eonist