Ho lavorato a una piccola immagine per caricare l'app per menubar per OS X. Ho creato una sottoclasse personalizzata NSView
per gli elementi caricati.NSViewController lento a registrare gli eventi del mouse?
Ecco come si presenta di default:
Gli eventi del mouse sono gestite dal di NSViewController
nel modo seguente vista:
import Cocoa
class MenuItemController: NSViewController {
private var trackingArea: NSTrackingArea?
override func mouseEntered(theEvent: NSEvent) {
if let v = self.view as? MenuItemView {
v.shouldHighlight = true
v.needsDisplay = true
}
}
override func mouseExited(theEvent: NSEvent) {
if let v = self.view as? MenuItemView {
v.shouldHighlight = false
v.needsDisplay = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
if (trackingArea == nil) {
trackingArea = NSTrackingArea(rect: self.view.bounds, options: [.ActiveAlways, .MouseEnteredAndExited], owner: self, userInfo: nil)
self.view.addTrackingArea(trackingArea!)
}
/* rest of the code... */
}
}
Funziona bene fino a quando muovo il cursore veloce sopra gli articoli. Sembra che l'evento mouseExited()
non viene chiamato, e la vista rimane con uno sfondo blu (mouse è in realtà sul pulsante Esci):
Ho anche cercato di spostare il movimentazione nel NSView
mouse, ma con stesso risultato. Apprezzo qualsiasi input! Grazie!
Questo suona molto simile ad altri problemi di prestazioni OSX lenti in cui l'attivazione dell'animazione core migliora le prestazioni. Dai un'occhiata a http://stackoverflow.com/questions/26696644/nstableview-view-based-scrolling-performance – Michael