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
なぜトラッキングエリアが尊重されていないのですか?それはあなたが使用しているオプションに関係しています
を使用して代わりにしてみてくださいその選択の目的は、追跡領域に指定された四角形の目に見える部分だけを追跡できるようにすることだと思っていました。追跡矩形が追加されているのは全体の視点にあるようです。 – rdelmar
さて、私は今すぐ手に入れました。私はドキュメントを読んで、NSTrackingInVisibleRectオプションでは、rectによって返される値は無視され、rectは自動的に可視rectの変更で更新されます。 – rdelmar
この場合、NSTrackingInVisibleRectを使用していたようですが、ドキュメントに従って、rectから返された値は無視されます。私は非常に似て検索からこの答えを見つけた[リンク](http://stackoverflow.com/questions/4136696/nstrackingarea-works-weird-entire-view-or-nothing-no-rectangles-respected) –