1

NStextFieldテキストの変更に合わせて拡大縮小するのサブクラスを作成しました。コードは次のとおりです。

- (NSSize)sizeToFitContent
{
    NSRect frame = [self frame];
    CGFloat width = frame.size.width;
    frame.size.height = CGFLOAT_MAX;
    CGFloat height = [self.cell cellSizeForBounds: frame].height;
    return NSMakeSize(width, height);
}

- (void)textDidChange:(NSNotification *)aNotification
{
    [super textDidChange:aNotification];
    [(NSCell *)self.cell title];
    NSSize newSize = [self sizeToFitContent];
    if (newSize.height != self.frame.size.height) {
        [self invalidateIntrinsicContentSize];
    }
}

- (NSSize)intrinsicContentSize
{
    if ( ![self.cell wraps] ) {
        return [super intrinsicContentSize];
    }
    return [self sizeToFitContent];
}

いくつかのプロジェクトで、コントロールがやりたいことを実行することを確認しました。最近、コントロールを a 内に配置しようとしましたが、NSTableCellView動作しなくなりました。プログラムでコントロールの stringValue を設定すると、コントロールのサイズが正しく変更されます。ただし、コントロールからテキストを入力または削除すると、新しい行が必要なときにサイズが変更されません。これら 2 つの状況でコントロールの動作が異なる理由がよくわかりません。

4

1 に答える 1

0

実装する必要があると思います

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row

あなたのNSTableViewDelegateで。

于 2013-01-10T19:12:31.247 に答える