私はMacプログラミングには新しく、カーソルがメインウィンドウに出入りするとイベントを発生させたい。私はNSTrackingAreaについて何かを読んだが、何をすべきか正確には分からない。NSTrackingAreaの使い方
9
A
答えて
13
アップルはNSTrackingAreasのドキュメントとサンプルを提供しています。
マウスがウィンドウに入ったときやウィンドウが存在するときを追跡する最も簡単な方法は、ウィンドウのcontentViewにトラッキングエリアを設定することです。
- (void) viewWillMoveToWindow:(NSWindow *)newWindow {
// Setup a new tracking area when the view is added to the window.
NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
}
- (void) mouseEntered:(NSEvent*)theEvent {
// Mouse entered tracking area.
}
- (void) mouseExited:(NSEvent*)theEvent {
// Mouse exited tracking area.
}
あなたはまた、NSViewののupdateTrackingAreasメソッドを実装し、確認するために、イベントのトラッキングエリアをテストする必要があります。しかし、これはちょうど簡単な例として、カスタムコンテンツビューのコードでは、ウィンドウのツールバー
を追跡しません。それは正しいものです。
5
回答者:Matt Bierner本当に助けてくれました。 -viewWillMoveToWindow:
メソッドを実装する必要があります。
私はまた、あなたも、あなたがビューのサイズが変更されたときのトラッキングエリアを処理したい場合は、これを実装する必要がありますことを追加します。カスタムサブクラスで
- (void)updateTrackingAreas
{
// remove out-of-date tracking areas and add recomputed ones..
}
を、ビューの変更ジオメトリを処理するために、これはあなたのために自動的に呼び出されます。
関連する問題
- 1. カスタムシェイプのNSTrackingArea
- 2. BaseAdapterの使い方と使い方
- 3. PHP:オブジェクトの使い方と使い方
- 4. 使い方JQueryの使い方
- 5. タイマーの使い方 - 方法?
- 6. XauGetAuthByAddrの使い方
- 7. ミューテックスの使い方
- 8. appIE.Document.Body.innerHTMLの使い方
- 9. notifyDataSetChangedの使い方
- 10. WPFの使い方
- 11. TransactionScopeの使い方
- 12. JProgressBarの使い方
- 13. DataProtectionProviderの使い方
- 14. AsyncTaskの使い方
- 15. Android:dmtracedumpの使い方
- 16. AutoScrollHelperの使い方
- 17. next_permutationの使い方
- 18. SentiWordNetの使い方
- 19. webserviceの使い方
- 20. テーブルモデルの使い方
- 21. orderInCategoryの使い方
- 22. @propertyの使い方
- 23. moveTaskToBack()の使い方
- 24. AssetPackagerの使い方
- 25. TCharHelperの使い方
- 26. iPhone:Tesseractの使い方
- 27. notifications.getの使い方
- 28. TrueForAllの使い方
- 29. AutoFitTextViewの使い方
- 30. シングルサインオンの使い方
これは問題ではありませんが、コードはどこに置く必要がありますか?カスタムビューのコードはどこにありますか?アウトレットとアクションを使用するときと同じように、Interface Builderのビューにオブジェクトを接続する必要がありますか? – icant
このコードはカスタムUIViewサブクラスに配置する必要があります。カスタムUIViewは、ウィンドウのコンテンツビューとして追加する必要があります。 Interface Builderを使用して、ウィンドウのコンテンツビューを作成または選択し、Interface Builderインスペクタパネルを使用してカスタムUIViewのクラスとしてそのクラスを指定します。 –
ありがとう、それは動作します! – icant