如何使用Cocoa进行自定义轨迹球/眼球控制?

时间:2012-08-30 13:51:35

标签: objective-c cocoa widget custom-controls trackball

我正在编写我的第一个Cocoa应用程序,我想制作一个“轨迹球/眼球/弧球/无论它叫什么”按钮来旋转3D OpenGL场景。

当您选择3D图表时,在Pages(Apple iWork套件)中有一个完美的自定义Cocoa控件示例。经过一些黑客攻击后,此控件似乎被引用为SFC3DRotateWidgetHere's a screenshot of the control in Pages

也许这个小部件是可重用的,但我没有找到方法或位置。所以我尝试重新创建它。

我对Cocoa缺乏经验,所以我不确定如何做到这一点,也不确定在哪里(即如何处理Interface Builder,如何处理代码......)。

我不确定是否需要覆盖绘图功能。我想使用带有NSTrackingArea(代码)的纹理按钮(Interface Builder)来处理鼠标事件(移动,拖动......),但该区域必须是矩形的。 Apple使用的自定义控件的交互式区域似乎遵循箭头的形状。 I've read on S.O. I can use NSBezierPath to create a more specific area(仅通过代码?)。

听起来对你有好处吗? 我想念一下吗?

让我们知道您是否有任何可以分享的提示,技巧或资源!

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来你想构建一个自定义控件。你可以通过继承NSControl来实现这一点,它有a guide on how to do。您可以通过实现各种方法来控制循环可单击区域以及对鼠标事件的响应。例如,您可以使用mouseDown:和相关方法跟踪鼠标事件。

您可能不需要使用任何自定义绘图代码,NSImageView带有各种箭头的子视图可能会很好地满足您的目的,除非您宁愿在代码中绘制它们。