Mam UITextfield z tekstem zastępczym.Symbol zastępczy i wpisany tekst nie wyrównywanie w UITextField
Użyłem obu właściwości wyrównania. Jednak tekst na uchwytach jest wciąż trochę na górnej stronie. Czy ktoś może mi pomóc?
Dzięki.
Mam UITextfield z tekstem zastępczym.Symbol zastępczy i wpisany tekst nie wyrównywanie w UITextField
Użyłem obu właściwości wyrównania. Jednak tekst na uchwytach jest wciąż trochę na górnej stronie. Czy ktoś może mi pomóc?
Dzięki.
Zgodnie z dokumentacją UITextField
należy korzystać z właściwości textAlignment
. Ponieważ dokument stwierdza: "Ta właściwość dotyczy zarówno głównego ciągu tekstowego, jak i łańcucha zastępczego, domyślną wartością tej właściwości jest UITextAlignmentLeft."
Więc twój kod będzie wyglądać następująco:
textfield.textAlignment = UITextAlignmentLeft
lub w zależności od tego, jak chcesz wyrównać tekst można użyć UITextAlignmentCenter
lub UITextAlignmentRight
po znaku =
.
Cóż, to nie pomoże. To tak, jakby wpisany tekst był wyrównany lub tekst zastępczy jest wyrównany (środkowe pionowe wyrównanie). Nie wiem, dlaczego te dwa teksty nie są odpowiednio wyrównane – Ahsan
Powiedziałbym, że baw się z Y Rozmiar używanego CGRectMake do stworzenia ramki. Może go zmniejszyć?
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
Oto moje rozwiązanie w MonoTouch dla konieczności ustalenia wyrównania znaku zastępczego względem tekstu. Jak zauważyłem w komentarzach - istnieją trzy odrębne elementy: edycja, statyczny tekst i statyczny symbol zastępczy. Odpowiednikiem w Objective-C jest drawTextInRect: i drawPlaceholderInRect:.
Moje rozwiązanie polegało na podklasie i przesunięciu źle wyrównanych elementów. Niestety problem wydaje się być związany z samym plikiem czcionek i sposobem, w jaki wpływa na niego tryb edycji, a także z tym, jak iOS renderuje statyczny tekst.
Mam nadzieję, że to komuś pomaga.
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));
}
}
Można zaksięgować rzeczywisty kod, którego używasz? – Nosrettap
@Nosrettap: Utworzono za pomocą IB. – Ahsan
Mam nadal ten problem. Czy kiedykolwiek znalazłeś poprawkę? :/ –