Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. public class MouseTrackingView: NSView {
  2.  
  3. public var callback: ((Bool) -> Void)?
  4.  
  5. private var trackingArea: NSTrackingArea?
  6.  
  7. public override init(frame: CGRect) {
  8. super.init(frame: frame)
  9. commonInit()
  10. }
  11.  
  12. required init?(coder decoder: NSCoder) {
  13. super.init(coder: decoder)
  14. commonInit()
  15. }
  16.  
  17. fileprivate func commonInit() {
  18. updateTrackingAreas()
  19. }
  20.  
  21. override public func updateTrackingAreas() {
  22. super.updateTrackingAreas()
  23. if let trackingArea = trackingArea {
  24. removeTrackingArea(trackingArea)
  25. }
  26.  
  27. trackingArea = NSTrackingArea(rect: bounds, options: [.activeInKeyWindow, .mouseEnteredAndExited], owner: self, userInfo: nil)
  28. addTrackingArea(trackingArea!)
  29. }
  30.  
  31. override public func mouseEntered(with event: NSEvent) {
  32. super.mouseEntered(with: event)
  33. callback?(true)
  34. }
  35.  
  36. override public func mouseExited(with event: NSEvent) {
  37. super.mouseExited(with: event)
  38. callback?(false)
  39. }
  40.  
  41.  
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement