gpt4 book ai didi

ios - 如何调用 drawPlaceholderInRect

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:20 25 4
gpt4 key购买 nike

我有一个自定义的 UITextField,这样我就可以得到答案可能建议的自定义占位符文本颜色。但是,我还想在运行时更改占位符文本的颜色,因此我创建了一个属性。

// Overide the placholder text color
- (void) drawPlaceholderInRect:(CGRect)rect
{
[self.placeholderTextColor setFill];
[self.placeholder drawInRect:rect
withFont:self.font
lineBreakMode:UILineBreakModeTailTruncation
alignment:self.textAlignment];
}

- (void) setPlaceholderTextColor:(UIColor *)placeholderTextColor
{
// To verify this is being called and that the placeholder property is set
NSLog(@"placeholder text: %@", self.placeholder);

_placeholderTextColor = placeholderTextColor;
[self setNeedsDisplay]; // This does not trigger drawPlaceholderInRect
}

问题是 docs say I should not call drawPlaceholderInRect directly , 和 [self setNeedsDisplay]; 不起作用。有什么想法吗?

最佳答案

drawPlaceholderInRect: 方法只有在文本字段实际包含占位符字符串时才会被调用。 (默认情况下没有)

尝试在 Interface Builder 中为您的文本字段设置占位符字符串。
还要确保在 Custom Class 字段中设置子类。

更新:
我尝试重现问题中描述的问题,也遇到了那个问题。根据这个 Stack Overflow 问题,这似乎是一个常见问题:https://stackoverflow.com/a/2581866/100848 .

作为解决方法(至少在针对 iOS >= 6.0 时),您可以使用 UITextField 的 attributedPlaceHolder:

NSMutableAttributedString* attributedString = [[NSMutableAttributedString alloc] initWithString:@"asdf"];
NSDictionary* attributes = @{NSForegroundColorAttributeName:[UIColor redColor]};
[attributedString setAttributes:attributes range:NSMakeRange(0, [attributedString length])];
[self.textField setAttributedPlaceholder:attributedString];

关于ios - 如何调用 drawPlaceholderInRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882652/

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