3

有没有可行的方法来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 时,我都会调用此函数,并且每次在 function 中调用-(IBAction)predicateEditorChanged:(NSPredicateEditor *)sender。它似乎工作正常,但是当我多次更改设置 NSPredicateEditor 有时调整大小开始工作不正确。

请提供任何帮助。

4

1 回答 1

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;
}

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

于 2012-10-18T22:26:52.873 回答