¿Cómo agregar el button Clear UITextfield?

Me gustaría agregar un button claro dentro de un UITextfield pero no aparece.

Este es el código para UITextfield:

@implementation databaseEnterDataViewController @synthesize customer = customer_ ; @synthesize type = type_ ; @synthesize code1 = code1_ ; @synthesize code2 = code2_ ; @synthesize background, changeType, codeOne, codeTwo, customers, suspendDisplayInfo, tf; #pragma mark - #pragma mark Initialization #pragma mark - #pragma mark View lifecycle - (void)viewDidLoad { [super viewDidLoad]; self.customer = @"" ; self.type = @"" ; self.code1 = @"" ; self.code2 = @"" ; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonSystemItemCancel target:self action:nil]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:nil]; self.navigationItem.title = @"Enter Data"; code1Field_.clearButtonMode = UITextFieldViewModeWhileEditing; code2Field_.clearButtonMode = UITextFieldViewModeUnlessEditing; customerField_.clearButtonMode = UITextFieldViewModeAlways; [self openDB]; [self createTable:@"barcodeScan" withField1:@"key" withField2:@"scanDate" withField3:@"theCustomer" withField4:@"type" withField5:@"theCode1" withField6:@"theCode2" withField7:@"discription" withField8:@"articleNr" withField9:@"batchNr" withField10:@"serialNr" withField11:@"expDate"]; self.suspendDisplayInfo=false; NSLog(@"%@",typeLabel_.text); #ifdef LOG_FILE NSFileManager *fileManger = [NSFileManager defaultManager]; if ([fileManger fileExistsAtPath:[self getLogFile]]) { [debug appendString:[[NSString alloc] initWithContentsOfFile:[self getLogFile]]]; [debugText setText:debug]; } #endif dtdev=[Linea shanetworkingDevice]; [dtdev addDelegate:self]; [dtdev connect]; types = [[NSMutableArray alloc] init]; [types addObject:@"Select barcode type"]; [types addObject:@"Intervascular"]; [types addObject:@"CID"]; [types addObject:@"MAQUET"]; [self pickerview]; tf.clearButtonMode =UITextFieldViewModeAlways; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return 4; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; // Make cell unselectable cell.selectionStyle = UITableViewCellSelectionStyleNone; tf = nil; tf.clearButtonMode =UITextFieldViewModeAlways; changeType = [UIButton buttonWithType:UIButtonTypeRoundedRect]; changeType.frame = CGRectMake(cell.frame.origin.x + 220, cell.frame.origin.y + 7, 80, 30); [changeType setTitle:@"Change type" forState:UIControlStateNormal]; changeType.backgroundColor= [UIColor clearColor]; [changeType.titleLabel setFont:[UIFont systemFontOfSize:14]]; [changeType addTarget:self action:@selector(clickeButton:) forControlEvents:UIControlEventTouchDown]; switch ( indexPath.row ) { case 0: { cell.textLabel.text = @"Customer:" ; tf = customerField_ = [self makeTextField:self.customer placeholder:@"Customer name"]; [cell addSubview:customerField_]; break ; } case 1: { cell.textLabel.text = @"Type:" ; tf = typeLabel_ = [self makeTextField:self.type placeholder:@"Type code"]; [cell addSubview:typeLabel_]; [cell addSubview:changeType]; break ; } case 2: { cell.textLabel.text = @"Code 1:" ; tf = code1Field_ = [self makeTextField:self.code1 placeholder:@"Code 1"]; [cell addSubview:code1Field_]; break ; } case 3: { cell.textLabel.text = @"Code 2:" ; tf = code2Field_ = [self makeTextField:self.code2 placeholder:@"code 2"]; [cell addSubview:code2Field_]; break ; } } // Textfield dimensions tf.frame = CGRectMake(120, 12, 170, 30); // Workaround to dismiss keyboard when Done/Return is tapped [tf addTarget:self action:@selector(textFieldFinished:) forControlEvents:UIControlEventEditingDidEndOnExit]; // We want to handle textFieldDidEndEditing tf.delegate = self ; return cell; } -(UITextField*) makeTextField: (NSString*)text placeholder: (NSString*)placeholder { UITextField*tf = [[UITextField alloc] init]; tf.placeholder = placeholder ; tf.text = text ; tf.autocorrectionType = UITextAutocorrectionTypeNo ; tf.autocapitalizationType = UITextAutocapitalizationTypeNone; tf.adjustsFontSizeToFitWidth = YES; tf.textColor = [UIColor colorWithRed:56.0f/255.0f green:84.0f/255.0f blue:135.0f/255.0f alpha:1.0f]; return tf ; } // Workaround to hide keyboard when Done is tapped - (IBAction)textFieldFinished:(id)sender { // [sender resignFirstResponder]; } // Textfield value changed, store the new value. - (void)textFieldDidEndEditing:(UITextField *)textField { if ( textField == customerField_ ) { self.customer = textField.text ; } else if ( textField == typeLabel_ ) { self.type = textField.text ; } else if ( textField == code1Field_ ) { self.code1 = textField.text ; } else if ( textField == code2Field_ ) { self.code2 = textField.text ; } } 

En el iPhone se ve así:

introduzca la descripción de la imagen aquí

Cuando agrego el button borrar como este

customerField_.clearButtonMode = UITextFieldViewModeWhileEditing;

el button no aparece.

¿Qué debo hacer para que sea visible?

Si usa UITextFieldViewModeAlways , verá el button si la cadena del campo de text no es nula o si su longitud es> 0. Creo que no puede mostrar el button Borrar si no hay nada que borrar.

Si desea que el button de borrado esté siempre visible, debe establecer la propiedad clearButtonMode del campo de clearButtonMode en UITextFieldViewModeAlways . La forma en que ha configurado actualmente el campo de text, el button borrar solo se muestra cuando se edita el campo de text.

EDITAR: Como Mat señala en los comentarios, sin importar el valor del campo de text en la propiedad clearButtonMode , el button de borrar solo se muestra si es relevante, es decir, si hay algo que borrar. Si el campo de text está vacío, no hay necesidad de mostrar el button de borrar.