我是Mac新手,我想在光标进入或退出主窗口时触发事件。我读了一些关于NSTrackingArea的内容,但我不明白该怎么做。如何使用NSTrackingArea
9
A
回答
13
Apple为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. NSTrackingArea with fullscreen window/view
- 3. 在未连接到窗口的NSView中使用NSTrackingArea?
- 4. NSWindow注册鼠标事件(使用NSTrackingArea),即使应用程序不重点?
- 5. 当使用initWithRect初始化时,NSTrackingArea会产生不同的结果:[self bounds]和[self frame]
- 6. 如何使用使用Response.Transmit()
- 7. 如何使用使用AJAX
- 8. 如何使用使用PowerShell
- 9. 如何使用,使用R
- 10. 如何使用
- 11. 如何使用
- 12. 如何使用
- 13. 如何使用
- 14. 如何使用*
- 15. 如何使用
- 16. 如何使用
- 17. 如何使用
- 18. 如何使用
- 19. 如何使用
- 20. 如何使用
- 21. 如何使用
- 22. 如何使用
- 23. 如何使用
- 24. 如何使用
- 25. 如何使用
- 26. 如何使用
- 27. 如何使用
- 28. 如何使用
- 29. 如何使用
- 30. 如何使用 “%”
好的,这将是一个noob问题,但我必须在哪里放置代码?我在哪里可以找到自定义视图的代码?在使用插座和动作时,我是否必须将对象连接到Interface Builder中的视图? – icant 2011-01-10 20:24:03
此代码应放置在自定义UIView子类中。然后应该添加自定义UIView作为窗口的内容视图。使用Interface Builder,为窗口创建或选择一个内容视图,并使用Interface Builder检查器面板指定它的类作为您的自定义UIView的类。 – 2011-01-10 20:31:59