2012-04-04 48 views
1

我一直在試驗跟蹤區域,並有一些問題,所以我創建了這個簡單的程序作爲測試。我在視圖的左下角創建了一個跟蹤區域(這是窗口的內容視圖),但無論我進入還是離開視圖,我都會收到mouseEntered並退出消息。我也試着將這段代碼放在init方法中,並且結果相同。爲什麼跟蹤區域不被尊重

@implementation Parent //This view is the contentView of the main window 

-(void)viewDidMoveToWindow{ 
    NSLog(@"In viwDidMoveToWindow"); 
    NSTrackingArea *area = [[NSTrackingArea alloc]initWithRect:NSMakeRect(0,0,50,50) options:NSTrackingInVisibleRect |NSTrackingMouseEnteredAndExited |NSTrackingActiveInActiveApp owner:self userInfo:nil]; 
    [self addTrackingArea:area]; 
} 

-(void)mouseEntered:(NSEvent *)theEvent { 
    NSLog(@"Entered"); 
} 

-(void)mouseExited:(NSEvent *)theEvent { 
    NSLog(@"Exited"); 
} 

@end 

爲什麼跟蹤區域不被遵守?

回答

1

就好像你正在使用,儘量不使用

options:NSTrackingActiveAlways | NSTrackingMouseEnteredAndExited 
+0

那麼,爲什麼如我所料不NSTrackingInVisibleRect不行的選項呢?我認爲這個選擇的目的是隻允許在追蹤區域中指定的矩形的可見部分進行追蹤 - 似乎在整個視圖中追蹤矩形被添加到了追蹤矩形中。 – rdelmar 2012-04-04 04:16:33

+0

好吧,我現在明白了 - 我重新閱讀了文檔,並且使用NSTrackingInVisibleRect選項說,rect返回的值被忽略,並且rect會自動更新可見矩形中的更改。 – rdelmar 2012-04-04 04:32:45

+0

在這種情況下,您似乎可以使用NSTrackingInVisibleRect,但根據文檔,從rect返回的值將被忽略。我發現這個答案從搜索是非常相似的[鏈接](http://stackoverflow.com/questions/4136696/nstrackingarea-works-weird-entire-view-or-nothing-no-rectangles-respected) – 2012-04-04 04:45:49

相關問題