首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充令牌后调整NSTokenField大小

填充令牌后调整NSTokenField大小
EN

Stack Overflow用户
提问于 2010-09-17 21:38:04
回答 1查看 1.2K关注 0票数 2

我使用NSTokenField作为用户输入标签的一种方式。一切都很好,当用户添加或删除标签时,它都与管理标签的CoreData挂钩。

我最近添加了逻辑,以便当用户使用Andrew Bowman的IFVerticallyExpandingTextField添加标签并换行到下一行时,NSTokenField可以垂直调整大小。同样,这一切都运行得很好。

问题是,当我最初必须用标签填充NSTokenField时,我需要调整它的大小。我通过调用以下命令来填充该字段:

代码语言:javascript
复制
[tagField setObjectValue: anArray];

其中anArray是表示标签或令牌的一系列对象。这又会调用NSTokenField委托方法

代码语言:javascript
复制
tokenField:displayStringForRepresentedObject:

它返回前一个数组中传递的对象的字符串表示形式。

在所有对displayStringForRepresentedObject的调用之后,我需要调整NSTokenField的大小。有没有人有任何通知的想法,或者有办法发现这一切都已经完成了?即使是在每次调用displayStringForRepresentedObject之间调用resize的方法也可能会起作用。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-17 22:27:53

您可以尝试类似于-setNeedsDisplay:和-displayIfNeeded的代码...即-setNeedsSizeToFit:和-sizeToFitIfNeeded。

您只需要一个"needsSizeToFit“BOOL标志和-setNeedsSizeToFit:和-sizeToFitIfNeeded方法。

设置令牌后,调用-setNeedsSizeToFit:YES。它将依次设置实例的选择器标志,如果标志为YES,它将调用self performSelector:@ needsSizeToFit (SizeToFitIfNeeded) withObject:nil afterDelay:0。您的-sizeToFitIfNeeded方法将检查needsSizeToFit标志是否为YES,调用self sizeToFit,然后将needsSizeToFit标志设置为NO。

更新

下面是执行上述基本自动调整大小的a complete class (JLNAutoSizingTokenField)。唯一的增强是在前面提到的委托方法中调用它:

代码语言:javascript
复制
- (NSString *)tokenField:(NSTokenField *)aTokenField 
displayStringForRepresentedObject:(id)representedObject
{
    [(JLNAutoSizingTokenField *)aTokenField setNeedsSizeToFit:YES];
    return representedObject;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3735782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档