NSPredicateEditor不会调整NSTextField的大小

时间:2012-04-09 10:44:47

标签: objective-c cocoa nspredicateeditor

是否有可行的方法使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 个答案:

答案 0 :(得分:0)

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

像这样:

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

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