2012-07-12 51 views
5

Tengo un UITextfield con texto de marcador de posición.texto del marcador de posición y escrito en texto que no se alinea en UITextField

He usado ambas propiedades de alineación. Sin embargo, el texto del marcador de posición sigue siendo un poco en el lado superior. Puede alguien ayudarme ?

Gracias.

+0

Se puede publicar el código real que está utilizando? – Nosrettap

+0

@Nosrettap: Creado utilizando IB. – Ahsan

+0

Estoy teniendo este problema todavía. ¿Alguna vez has encontrado una solución? :/ –

Respuesta

0

Según la documentación de UITextField, debe utilizar la propiedad textAlignment. Como dice el documento "Esta propiedad se aplica tanto a la cadena de texto principal como a la cadena de marcador de posición. El valor predeterminado de esta propiedad es UITextAlignmentLeft".

lo que el código sería algo como:

textfield.textAlignment = UITextAlignmentLeft 

o dependiendo de cómo desea alinear el texto que podría utilizar UITextAlignmentCenter o UITextAlignmentRight después de la señal =.

+0

Bueno, esto no ayuda. Es como si el texto escrito a máquina está alineado o el texto del marcador de posición está alineado (alineación vertical central). No estoy seguro de por qué estos dos textos no están alineados correctamente – Ahsan

0

Yo diría que juegue con el tamaño Y de que usó CGRectMake para crear su marco. Tal vez hacerlo más pequeño?

3
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
1

Aquí está mi solución en MonoTouch para tener que arreglar la alineación del marcador de posición frente al texto. Como noté en los comentarios, hay tres piezas distintas: la edición, el texto estático y el marcador de posición estático. El equivalente en Objective-C es drawTextInRect: y drawPlaceholderInRect:.

Mi solución fue crear una subclase y compensar los elementos mal alineados. Lamentablemente, el problema parece estar relacionado con el archivo de fuente en sí y cómo el modo de edición lo afecta, en comparación con la forma en que iOS representa el texto estático.

Espero que esto ayude a alguien.

Allison

public class MyTextField : UITextField 
{ 
    public MyTextField(RectangleF rect) : base(rect) 
    { 
    } 

    public override void DrawPlaceholder(RectangleF rect) 
    { 
     base.DrawPlaceholder(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height)); 
    } 

    public override void DrawText(RectangleF rect) 
    { 
     base.DrawText(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height)); 
    } 
} 
Cuestiones relacionadas