El text de UITextField se superpone al button de borrado

Estoy agregando un campo de text a mi vista así:

UITextField* tf_email = [[UITextField alloc] initWithFrame:CGRectMake((320-btnImage1.size.width)/2, 170, 175, 35)]; [tf_email setBackgroundColor:[UIColor clearColor]]; [tf_email setBorderStyle:UITextBorderStyleRoundedRect]; [tf_email setClearButtonMode:UITextFieldViewModeWhileEditing]; [tf_email setReturnKeyType:UIReturnKeyDone]; [tf_email setAutocapitalizationType:UITextAutocapitalizationTypeNone]; [tf_email setEnablesReturnKeyAutomatically:NO]; [tf_email setDelegate:self]; [tf_email setOpaque:YES]; tf_email.tag=1; tf_email.font = TTSTYLEVAR(font); tf_email.layer.cornerRadius = 10; tf_email.keyboardType = UIKeyboardTypeEmailAddress; [tf_email setAutocorrectionType:UITextAutocorrectionTypeNo]; tf_email.placeholder = @"your@email.com"; [self.view addSubview:tf_email]; 

Cuando ingrese text largo en este campo, el text y el button borrar se superponen. ¿Alguien sabe cómo arreglar esto?

Cree una subclass de UITextField y anule los methods que se dan a continuación,

 /*< Place holder position >*/ - (CGRect)textRectForBounds:(CGRect)bounds { bounds.size.width = bounds.size.width - 20.0f; return bounds; } /*< Text Posiotion >*/ - (CGRect)editingRectForBounds:(CGRect)bounds { bounds.size.width = bounds.size.width - 20.0f; return bounds; } 

Saludos !!!

Pensé cuál era el problema. En otro file, tenía una categoría definida para UITextField. Esta categoría especificó que el área de text está muy cerca del borde izquierdo y derecho. Eso estaba causando la superposition.

Lección aprendida: al definir categorías, debemos usar files separados para que las modificaciones sean fácilmente detectables.

@Augustine PA, creo que un mejor enfoque es llamar al super y modificar el resultado así:

 -(CGRect) textRectForBounds:(CGRect)bounds { CGRect rect = [super textRectForBounds:bounds]; rect.size.width = rect.size.width - 20.0f; return rect; } -(CGRect) editingRectForBounds:(CGRect)bounds { CGRect rect = [super editingRectForBounds:bounds]; rect.size.width = rect.size.width - 20.0f; return rect; } 

[button bringSubviewToFront:self.view];

afert agregar campo de text …