我试图管理OS X应用程序上一个简单按钮的不同状态:当用户单击它时,以及用户释放单击时。
目前我通过NSMomentaryLightButton设置我的按钮类型
NSMomentaryLightButton单击按钮(处于打开状态)时,它显示为点亮状态。如果按钮带有边框,则它也可能会凹陷。释放按钮后,它将返回其正常(关闭)状态。
这种类型的按钮最适合简单触发操作,因为它不显示其状态。它总是显示其正常图像或标题。该选项在Interface Builder的Button检查器中称为Momentary Light。
我以为这是个好方法,但是当我打印按钮状态时,它就像是切换按钮,而不是我设置的按钮。如您在示例gif上看到的
综上所述,我如何才能拥有真正的按钮行为?用户单击时以及释放用户单击时调用该函数。
谢,
您不想使用按钮作为钢琴键。首先,它们是非矩形的,它们不像按钮那样起作用:既不是单动按钮也不是拨动开关。您正在以自定义方式与自定义视图进行交互,这意味着NSButton
不需要控件层次结构。相反,您是在子类化NSView
和捕获低级鼠标事件,如此处所述:
您在自己的评论中详细介绍了您自己的想法,但是我想确保您有更高层次的观点。它甚至可以,并且可能是最好的,整合所有的钢琴键的成单一视图,并让自己使用呈现的按键NSBezierPath
,并使用执行鼠标点击检测containsPoint
:
这是很多工作,但是进行真正专业外观的钢琴模拟的唯一方法。然后,您可以使用所需的轮廓,填充和标签来呈现键,而不受内置按钮形状和布局的限制。例如,您甚至可以使按键的底部边缘稍微变圆,或者应用闪亮的纹理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句