Why aren't my tracking rects working?

Q: I'm trying to implement tracking rectangles so that I can recieve -mouseEntered: and -mouseExited: messages and provide visual feedback to the user. I've sent my view an -addTrackingRect:owner:userData:assumeInside: message, but it seems to have no effect.

A: This symptom usually results from trying to set tracking rectangles before your view has been added to a window.

Although NSView implements the -addTrackingRect:owner:userData:assumeInside: method, the list of tracking rectangles is kept by the window, not the view. When your -initWithFrame: method is executed, your view is not yet associated with any window, so the view can't actually set any tracking rects.

A better place to send your -addTrackingRect:.. messages is in a -viewDidMoveToWindow: or -awakefromNib method.

Document Revision History

DateNotes
2004-12-02Describes a common mistake in setting up cursor-tracking rectangles.

Posted: 2004-12-02


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.