I would like to add a clear button inside a UITextfield but it doesn't show up.
This the code for the 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 sharedDevice];
[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 ;
}
}
On the iphone it looks like this:

When I add the clear button like this
customerField_.clearButtonMode = UITextFieldViewModeWhileEditing;
the button doesn't show up.
What should I do to make it visible?
If you use UITextFieldViewModeAlways, you'll see the button if the string of the textfield is not nil or if its lenght is > 0. I think that you can't to show the clearbutton if there is nothing to clear.
If you want the clear button to be always visible, then you need to set the text field's clearButtonMode property to UITextFieldViewModeAlways. The way you've currently configured the text field, the clear button only shows itself when the text field is being edited.
EDIT: As Mat points out in the comments, no matter what value the text field's clearButtonMode property is given, the clear button is only shown if it is relevant, that is, if there is something to clear. If the text field is empty, there is no need to show the clear button.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With