2012-04-04 9 views
1

トラッキングエリアを試していて問題があるので、この簡単なプログラムをテストとして作成しました。自分のビュー(ウィンドウのコンテンツビュー)の左下隅に1つのトラッキングエリアを作成しますが、どこに入ってもビューを終了しても、mouseEnteredと終了メッセージが届きます。また、このコードをinitメソッドに入れてみました。awakeFromNibと同じ結果が得られました。トラッキングエリアが尊重されないのはなぜですか?

@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

、私は期待どおりなぜNSTrackingInVisibleRectが動作しない?

options:NSTrackingActiveAlways | NSTrackingMouseEnteredAndExited 
+0

を使用して代わりにしてみてくださいその選択の目的は、追跡領域に指定された四角形の目に見える部分だけを追跡できるようにすることだと思っていました。追跡矩形が追加されているのは全体の視点にあるようです。 – rdelmar

+0

さて、私は今すぐ手に入れました。私はドキュメントを読んで、NSTrackingInVisibleRectオプションでは、rectによって返される値は無視され、rectは自動的に可視rectの変更で更新されます。 – rdelmar

+0

この場合、NSTrackingInVisibleRectを使用していたようですが、ドキュメントに従って、rectから返された値は無視されます。私は非常に似て検索からこの答えを見つけた[リンク](http://stackoverflow.com/questions/4136696/nstrackingarea-works-weird-entire-view-or-nothing-no-rectangles-respected) –

関連する問題