2010-08-09 10 views
5

J'ai un UITextField dans un UITableViewCell. Pour une raison quelconque, le bouton d'effacement n'est pas aligné sur le texte du textField. Voici mon code textField:Pourquoi le bouton d'effacement n'est-il pas aligné sur le texte d'un objet UITextField?


cell.selectionStyle = UITableViewCellSelectionStyleNone; 
usernameField = [[UITextField alloc] initWithFrame:CGRectMake(22, 10, cell.contentView.frame.size.width, cell.contentView.frame.size.height)]; 
usernameField.adjustsFontSizeToFitWidth = YES; 
usernameField.placeholder = @"Username"; 
usernameField.backgroundColor = [UIColor clearColor]; 
usernameField.keyboardType = UIKeyboardTypeDefault; 
usernameField.autocapitalizationType = UITextAutocorrectionTypeNo; 
usernameField.autocorrectionType = UITextAutocorrectionTypeNo; 
usernameField.returnKeyType = UIReturnKeyNext; 
usernameField.delegate = self; 
usernameField.clearButtonMode = UITextFieldViewModeAlways; 
[usernameField setEnabled:YES]; 
[cell addSubview:usernameField]; 
[usernameField becomeFirstResponder]; 
[usernameField release]; 

Et voici l'image pour démontrer le problème: Screenshot

Edit: J'ai aussi essayé avec - (CGRect)clearButtonRectForBounds:(CGRect)bounds et toujours rien

Répondre

19

Quelle est votre propriété contentVerticalAlignment? J'ai vu ce problème apparaître lorsque le bouton d'effacement est aligné au centre, mais le texte est aligné en haut. Essayez de définir l'alignement de votre champ de texte à l'adresse suivante:

usernameField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

Avez-vous de la chance?

+0

Merci beaucoup pour votre aide, mais maintenant le texte et le bouton d'effacement sont alignés au bas de la cellule. J'ai ce code que vous avez réellement aligner le texte, pas le bouton effacer. Je veux aligner le bouton d'effacement au centre de la cellule Des suggestions? –

+0

Ça a marché! Je viens de changer les attributs CGRect pour s'adapter au bouton d'effacement –

+0

Merci. pour clarifier, j'ai pris en compte la hauteur de la cellule et le champ de texte, pour corriger le décalage vertical. CGRect newFrame = albumTitleTextField.frame; nouveauFrame.origin.y = (cell.bounds.size.height - newFrame.size.height)/2.0; [albumTitleTextField setFrame: newFrame]; –