Ответ Майка Абдуллы объясняет пункт 2.
Вот предположение о том, почему вы вообще не получаете события, когда не используете флаг NSTrackingInVisibleRect:
Возможно, указанная вами переменная rect
не входит в систему координат представления. Вы можете использовать следующий код в качестве назначенного инициализатора вашего подкласса NSView для получения mouseEntered:
и mouseExited:
событий для всей области вашего просмотра:
- (id)initWithFrame:(NSRect)frame
{
if ((self = [super initWithFrame:frame]))
{
//by using [self bounds] we get our internal origin (0, 0)
NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options:(NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
[trackingArea release];
}
return self;
}
Документация Apple гласит:
При создании объекта области слежения,
Вы указываете прямоугольник (в представлении
система координат), ...