gpt4 book ai didi

objective-c - 带有子类的 NSSecureTextField 中的文本垂直居中

转载 作者:太空狗 更新时间:2023-10-30 03:22:59 24 4
gpt4 key购买 nike

我试图在我的 NSTextFields 中将文本垂直居中,但其中一个用于密码,所以它是 NSSecureTextField。我已经将它的类设置为 MDVerticallyCenteredSecureTextFieldCell具有以下实现:

- (NSRect)adjustedFrameToVerticallyCenterText:(NSRect)frame {
// super would normally draw text at the top of the cell
NSInteger offset = floor((NSHeight(frame) -
([[self font] ascender] - [[self font] descender])) / 2);
return NSInsetRect(frame, 0.0, offset+10);
}

- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView
editor:(NSText *)editor delegate:(id)delegate event:(NSEvent *)event {
[super editWithFrame:[self adjustedFrameToVerticallyCenterText:aRect]
inView:controlView editor:editor delegate:delegate event:event];
}

- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView
editor:(NSText *)editor delegate:(id)delegate
start:(NSInteger)start length:(NSInteger)length {

[super selectWithFrame:[self adjustedFrameToVerticallyCenterText:aRect]
inView:controlView editor:editor delegate:delegate
start:start length:length];
}

- (void)drawInteriorWithFrame:(NSRect)frame inView:(NSView *)view {
[super drawInteriorWithFrame:
[self adjustedFrameToVerticallyCenterText:frame] inView:view];
}

-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
[super drawWithFrame:cellFrame inView:controlView];
}

一个类似的子类已经在为常规的 NSTextFieldCell 工作,只是不是这个的安全版本。 Apple 似乎以某种方式保护了这些方法不被覆盖。

现在密码字段是唯一未对齐的字段:

misaligned "password" field

谁能建议一种方法来调用 NSSecureTextFieldCell 子类的方法或另一种使文本字段垂直居中的方法?

最佳答案

尝试使用常规的 NSTextField,其中包含 NSSecureTextFieldCell 子类。我遇到了同样的问题,但这种组合有效。

关于objective-c - 带有子类的 NSSecureTextField 中的文本垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com