UITextField
コントロールに設定したプレースホルダーテキストの色を黒に変更したいと思います。
通常のテキストをプレースホルダーとして使用したり、プレースホルダーの動作を模倣するためにすべてのメソッドをオーバーライドしたりせずに、これを実行したいと思います。
このメソッドをオーバーライドすると次のようになると思います:
- (void)drawPlaceholderInRect:(CGRect)rect
そうすると、これができるはずです。しかし、このメソッド内から実際のプレースホルダー オブジェクトにアクセスする方法がわかりません。
ベストアンサー1
iOS 6 の UIViews に属性付き文字列が導入されて以来、次のようにプレースホルダー テキストに色を割り当てることが可能になりました。
if ([textField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
UIColor *color = [UIColor blackColor];
textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholderText attributes:@{NSForegroundColorAttributeName: color}];
} else {
NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0");
// TODO: Add fall-back code to set placeholder color.
}