Search code examples
iphoneios5xcode4uitextfield

Centering Placeholder Text in Subclass of UITextField


So first, I needed to set the placeholder text color, so I subclassed the UITextfield as shown in several stack overflow posts. This works fine. Here is an example post of this: How do I subclass UITextField and override drawPlaceholderInRect to change Placeholder color.

But, when I try to use searchNameField.textAlignment = UITextAlignmentCenter; It is no longer centering the placeholder. The input text is still centered fine.

So then, assuming that the centering is not working because of the subclassing, what do I have to add to my UITextField subclass in order to have the placeholder text centered?

Thanks

Edit

Here is the code I used to solve this problem. This is placed inside my subclass of UITextField.

- (CGRect)placeholderRectForBounds:(CGRect)bounds 
{
    CGSize size = [[self placeholder] sizeWithFont:[UIFont fontWithName:@"Arial" size:placeholdTextSize]];

    return CGRectMake( (bounds.size.width - size.width)/2 , bounds.origin.y , bounds.size.width , bounds.size.height);
}

Note that placeholdTextSize is a property that I set during initialization.


Solution

  • Here you go buddy

    subclassing UITextField will do the work:

    // CustomTextField.h
    @interface CustomTextField : UITextField {
    }
    @end
    

    override the methods:

    @implementation
    - (CGRect)placeholderRectForBounds:(CGRect)bounds {
        return CGRectMake(x,y,width,height);//Return your desired x,y position and width,height
    }
    
    - (void)drawPlaceholderInRect:(CGRect)rect {
        //draw place holder.
     [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]];
    
    }
    @end