我的用户界面存在问题。我想制作一些控件(即只读NSTextField
(又名多线标签)和NSTokenField
)显示它们包含的所有文本,这些文本可能会有很大不同(很多行都有很多单词)
我想把它们嵌入NSScrollView
里面,但也许这还不够,因为我无法实现我的目标......
有人可以帮我解决这个问题吗?
谢谢
编辑:我添加了一张图片。
也许滚动条不是正确的解决方案。 正如您在图像中看到的,我有一个“简单”的attribute1字段,然后是第二个包含大量文本的字段(还有更多需要在其中显示的文本),以及一个包含大量文本的令牌字段文本。
我看到两种选择(即使我不知道如何实现它们......):
NSView
)... EDIT2:
还有问题:
如果我设置为约束“size> =我的最小值”,那么文本字段会正确增长..当然没有滚动视图..如果,那么,我尝试将其嵌入NSScrollView
文本中再次剪裁(并且滚动视图不会滚动)...
EDIT3:我附上了一个示例项目,其中我尝试显示问题(没有我主项目的所有其他内容) http://www.filedropper.com/testtextfield
答案 0 :(得分:1)
您的要求是制作具有NSTextField和NSTokenField的自定义控件。
您可以做的是,创建一个NSView并将它们嵌入其中,并在NSScrollView中显示它们。
答案 1 :(得分:0)
根据你想做的事情,Anoop的建议可能很好,将它们嵌入NSView
范围内的NSScrollView
。如果您希望滚动视图中的每个字段与滚动视图具有相同的宽度,但动态更改其高度,则需要在滚动视图上侦听NSViewFrameDidChangeNotification
并更改{ {1}}和preferredMaxLayoutWidth
中的每一个{1}}都匹配滚动视图的宽度。我可能建议继承包含NSTextField
的子类并让它监听通知。
编辑:
我不确定你遇到的具体问题是什么,但这是我如何解决问题:
1)创建NSTokenField
的子类作为容器视图。
2)将文本视图嵌入容器视图中的实例中,并将该容器视图嵌入NSView
3)文本视图应该对其超级视图具有前导和尾随空间约束(可能为0,但对您有用)以及相互之间的顶部和底部约束以及超级视图将它们置于堆叠配置中。
4)在容器视图子类中,在其包含的滚动视图上注册NSView
,当它收到通知时,在每个文本字段上NSScrollView
以匹配NSScrollView的宽度。
答案 2 :(得分:0)
我解决了我的问题(好吧......它更像是一种解决方法,而不是真正的解决方案):