我看了一下你的問題。我無法消除滯後,但如果將popover.animates
設置爲false
,則可能會減少。
錯誤的做法:
我能夠通過添加新的邊界(無影)window
在另一個之上,解決了mouseExited
超過popover
問題。將trackingArea
添加到透明窗口,將彈出窗口添加到原始窗口。根據透明窗口level
,它位於彈出窗口之上,因此它們不能相互干擾。 在GIF下面你可以看到我的測試結果:
下面是我的一些代碼:
鼠標跟蹤:
override func mouseMoved(with event: NSEvent) {
let location = self.view.convert(event.locationInWindow, from: nil)
popover.positioningRect.origin.x = location.x
popover.positioningRect.origin.y = location.y
}
自定義窗口:
transparentWindow.backgroundColor = NSColor.clear
transparentWindow.isOpaque = false
transparentWindow.styleMask = .borderless
transparentWindow.makeKeyAndOrderFront(nil)
Update 11/11/2016:
我剛剛在您提供的鏈接中閱讀了該問題。有一個窗口可以設置ignoresMouseEvents
。儘管NSPopover
繼承自NSObject
,但您有一個contentViewController
,該對象包含一個view
對象,該對象包含彈出0123,。 (如所解釋here)
所以只需設置
popover.contentViewController?.view.window?.ignoresMouseEvents = true
的popover
之後被示出。
我已經在使用'popover'。animates = false「,但延遲仍然很明顯: - /我也只是通過popover.contentViewController?.view.window?.setFrameOrigin()直接嘗試了popover的起源,但這也沒有幫助,所以我猜沒有解決方案。 'ignoresMouseEvents = true'可以正常工作,謝謝! – MrMage
@MrMage你應該獎勵給我mangerlahn賞金:) – manniL