テキストフィールドの「自然な」サイズを計算できるようにすることは、一般的に 受け入れられているようです。cellSizeForBounds:
ただし、NSTextField については、完全に一致しないことがわかりました。
@interface MyTextField : NSTextField @end
@implementation MyTextField
- (void)textDidChange:(NSNotification *)notification {
[super textDidChange:notification];
[self validateEditing]; // Forces updating from the field editor
NSSize cellSize = [self.cell cellSizeForBounds:
NSMakeRect(0, 0, self.bounds.size.width, CGFLOAT_MAX)];
NSRect frame = self.frame;
CGFloat heightDelta = cellSize.height - frame.size.height;
frame.size.height += heightDelta;
if (!self.superview.flipped) { frame.origin.y -= heightDelta; }
self.frame = frame;
}
@end
(私は自動レイアウトを使用していませんが、原則は同じです。この問題はすべての文字列で発生するわけではありませんが、再現するのは非常に簡単です。)
これは、余分なオフセットを追加するテキスト フィールドの境界線が原因であると思われます。cellSizeForBounds:
と NSTextField の関係を自動的に計算する方法はありますframe
か? 他にどのようにこの問題を解決できますか?