NSPredicateEditor 不调整 NSTextField 的大小

Posted

技术标签:

【中文标题】NSPredicateEditor 不调整 NSTextField 的大小【英文标题】:NSPredicateEditor does not resize NSTextField 【发布时间】:2012-04-09 10:44:46 【问题描述】:

有没有可行的方法让NSPredicateEditor调整NSTextField的大小?

我得到的只是继承NSPredicateEditorRowTemplate 并在我的类中编写以下函数:

- (void)setTextFieldFrameWithPredicateEditor:(NSPredicateEditor *)predicateEditor
    NSArray *arr = [self templateViews];
    NSView *view = [arr lastObject];
    NSSize needSize = NSMakeSize(NSMaxX(predicateEditor.frame), 17);
    [view setFrameSize:needSize];

[view setAutoresizingMask:(NSViewMaxXMargin | NSViewWidthSizable)] 设置锚点(边距)没有影响

每次按下按钮显示 NSPredicateEditor 时,我都会调用此函数,并且每次都在函数 -(IBAction)predicateEditorChanged:(NSPredicateEditor *)sender 中调用。它似乎工作正常,但是当我多次更改设置 NSPredicateEditor 有时调整大小开始工作不正确。

请帮忙。

【问题讨论】:

【参考方案1】:

一种选择是创建一个自定义的 NSPredicateEditorRowTemplate 并覆盖 templateViews 方法。

像这样:

- (NSArray *)templateViews 
    NSArray *views = [super templateViews];
    NSView *lastView = [views lastObject];
    NSRect viewFrame = lastView.frame;
    viewFrame.size.width = 100.0f;
    lastView.frame = viewFrame;
    return views;

然后将宽度设置为您需要的任何值。

【讨论】:

以上是关于NSPredicateEditor 不调整 NSTextField 的大小的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicateEditor 不处理整数值

iOS 上是不是存在类似 NSPredicateEditor 的东西?

NSPredicateEditor 只是不会出现

NSPredicateEditor,忽略没有搜索词的行?

自定义 NSPredicateEditor

如何将 NSPredicateEditor/NSRuleEditor 背景设置为交替行?