回答が示唆するように、カスタム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
}
問題は、drawPlaceholderInRect を直接呼び出すべきではないとドキュメントに記載されており、機能しない[self setNeedsDisplay];
ことです。何か案は?