Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MouseTrackingView: NSView {
- public var callback: ((Bool) -> Void)?
- private var trackingArea: NSTrackingArea?
- public override init(frame: CGRect) {
- super.init(frame: frame)
- commonInit()
- }
- required init?(coder decoder: NSCoder) {
- super.init(coder: decoder)
- commonInit()
- }
- fileprivate func commonInit() {
- updateTrackingAreas()
- }
- override public func updateTrackingAreas() {
- super.updateTrackingAreas()
- if let trackingArea = trackingArea {
- removeTrackingArea(trackingArea)
- }
- trackingArea = NSTrackingArea(rect: bounds, options: [.activeInKeyWindow, .mouseEnteredAndExited], owner: self, userInfo: nil)
- addTrackingArea(trackingArea!)
- }
- override public func mouseEntered(with event: NSEvent) {
- super.mouseEntered(with: event)
- callback?(true)
- }
- override public func mouseExited(with event: NSEvent) {
- super.mouseExited(with: event)
- callback?(false)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement