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

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 に答える