2014-06-12 19 views
9

Ho un bug molto strano che prova a centro orizzontale testo nell'oggetto UITextField nell'app iOS 7+.UITextField allineamento orizzontale del testo - testo non centrato

Ho impostato un nuovo progetto per isolare il bug e per assicurarmi che non stia facendo qualcosa di sbagliato.

In viewDidAppear: metodo che alloc/init una nuova UITextField esempio così:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 200.0f)]; 
tf.backgroundColor = [UIColor orangeColor]; 
tf.textAlignment = NSTextAlignmentCenter; 

[self.view addSubview:tf]; 

Questo è tutto. Quando ho eseguito questa applicazione di esempio su iPhone Retina (4 pollici a 64-bit) simulatore ottengo seguente risultato:

enter image description here

Dopo aver digitato alcune lettere ottengo questo:

enter image description here

Qualcuno sa cosa sta succedendo? Il testo dovrebbe essere centrato durante la digitazione. Non ho incontrato questo bug fino ad ora. È collegato a iOS o sto facendo qualcosa di sbagliato?

P.s .: Si sta verificando anche su iDevices.

Grazie in anticipo.

EDIT:

Aggiunta:

tf.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

non aiuta.

EDIT 2:

Come Inder Kumar Rathore suggerito Ho cercato di impostare un altezza a 20.0f in questo modo:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 20.0f)]; 

e funziona sorprendentemente. Ma non risolve il problema. Ho scoperto che l'aumento di altezza da 20.0f su rende il problema solo peggiore. Penso che abbia qualcosa a che fare con il rapporto altezza riga/altezza del campo di testo. Non lo so ..

+0

Un comportamento strano, anche se diminuendo l'altezza a 20, funziona perfettamente. –

+0

@InderKumarRathore Grazie per il tuo commento. L'ho provato e io lavoro ma questo non risolve il problema. Ho anche scoperto che aumentare l'altezza da 20 in su rende il problema solo peggiore. Come sarebbe un qualche tipo di problema relativo alle dimensioni. Non ho idea di cosa stia succedendo:/ – damirstuhec

+1

UITextField è destinato all'uso per una singola riga di testo. Perché vuoi aumentare l'altezza del campo di testo. potresti voler utilizzare UITextview –

risposta

1

Penso che UITextField si aspetta che la dimensione verticale del carattere sia equivalente all'altezza del campo di testo. Se immagini un font con una dimensione in punti che riempirà l'altezza verticale del tuo campo di testo a 200 punti, sarai in grado di digitare solo alcuni caratteri prima che riempia la larghezza orizzontale e passi dal comportamento centrato a quello allineato a destra comportamento. Questo sembra essere il comportamento del tuo "bug" qui sopra, in cui puoi digitare solo alcuni caratteri prima che cambi i comportamenti.

Penso che la cosa migliore da fare sia rendere il campo di testo abbastanza alto da adattarsi al carattere, e centrarlo verticalmente in un contenitore contenente UIView.

+0

Sì, ma questo non spiega né risolve il mio problema. Sapevo già che questo avrebbe "risolto" il mio problema, ma volevo una spiegazione. Ad ogni modo, accetterò la tua risposta perché è una soluzione. – damirstuhec

Problemi correlati