我正在使用NSSlider控件,并且我已将其配置为使用连续模式,以便在用户滑动时可以使用滑块的当前值不断更新NSTextField.我遇到的问题是,在用户放开旋钮之前我不想"提交"该值,即我不希望我的应用程序考虑该值,除非用户放开滑块来表示它达到了理想的价值.目前,我无法知道何时是这样的; 动作方法只是连续调用,没有指示滑块何时被释放.
如果可能的话,我需要一个解决方案来覆盖边缘情况,例如用户使用键盘或辅助功能工具(如果有这样的东西)与滑块交互.我开始研究使用鼠标事件,但由于我刚刚概述的原因,它似乎不是最佳解决方案.
在编写Mac应用程序和使用Cocoa时,我是初学者,所以请原谅我的无知.
我正在寻找创建一个自定义视图,它暴露了一些属性,然后我可以绑定到NSObjectController.由于它是一个自定义视图,Bindings Inspector显然没有列出我添加到视图中的任何属性,然后我可以使用Interface Builder绑定到这些属性.
在转向Stackoverflow/Google寻求帮助之后,我偶然发现了几个可能的解决方案,但似乎两者都不适合我的情况.第一个建议创建一个IBPlugin,这意味着我的绑定将在Bindings Inspector中提供.然后,我可以使用IB将视图绑定到控制器.显然,Xcode 4不支持IBPlugins,所以一个人不在窗外.我也假设(可能是错误地)不再支持IBPlugins,因为这些天有更好的方法来做这些事情?
第二个选项是以编程方式将控制器绑定到视图.我对如何实现这一点感到有点困惑.是否需要子类化NSObjectController,以便我可以添加绑定到视图的调用?我是否需要在视图中添加任何内容以支持此操作?我见过的一些例子说你需要覆盖bind方法,而其他人则说你没有.
另外,我注意到[self exposeBinding:@"bindingName"]
初始化程序中有一些示例自定义视图调用.根据我从各种来源收集的内容,这与IBPlugins有关,如果我不使用它,我不需要这样做.那是对的吗?
我在这里找到了一篇关于Stackoverflow的帖子,似乎讨论了与我的问题非常相似的内容,但对于最佳答案没有任何明确的赢家.noa在9月12日的最后评论似乎很有趣,尽管他们提到你应该打电话exposeBinding:
.这条评论是否正确?是否真的需要对exposeBinding进行调用?
为任何愚蠢的问题道歉.任何帮助非常感谢.
我想要绘制NSAttributedString
一个自定义视图并将其垂直居中,无论字体,大小等等.字符串只是1-99之间的一个小数字.
到目前为止,我已经尝试调用该[NSAttributedString size]
方法以允许我确定绘制的字符串的高度.计划是在使用drawInRect:
或绘制它时使用高度数字使字符串居中drawAtPoint:
.我遇到的问题是,size方法返回的高度大于绘制的字形.做了一些实验后,似乎size:
方法返回的属性,包括伸等最高可能字型的高度,而不是我的NSAttributedString特定字型的高度.
更新:
正如Joshua Nozzi在他的回答中提到的,我可以理解最大高度是你想要用于垂直居中的高度,因为这会阻止你的文字在字符串改变时垂直跳跃.但是,在我的情况下,我想在视觉上将一个数字(例如"10")居中,通常在一个圆圈内.这是我在关注时所关心的"10"线的实际高度.
如何获得与绘制的实际字形紧密绑定的边界框?我想我可能会在某处使用Core Text和CTLineGetImageBounds()
函数; 但是,这是很多代码.如果我可以在不使用这种详细/低级代码的情况下完成,那就更好了.
我知道我可能会用上面的方法完全咆哮错误的树.你会建议什么方法?我是否需要直接使用Cocoa Text/Core Text,而不是使用NSAttributedString的添加?
Mac OS中的文本系统功能丰富,对于像我这样的初学者来说有点吓人.任何帮助非常感谢.