我想在UITextfield中添加一个清除按钮,但它不显示。
这是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 ;
}
}
在iPhone上看起来像这样:
当我像这样添加清除按钮时
customerField_.clearButtonMode = UITextFieldViewModeWhileEditing;
按钮没有显示。
我该怎么做才能让它可见?
答案 0 :(得分:6)
如果你使用UITextFieldViewModeAlways
,如果textfield的字符串不是nil或者它的长度是>那么你会看到按钮。 0.如果没有什么可以清除的话,我认为你不能显示清除按钮。
答案 1 :(得分:3)
如果您希望清除按钮始终可见,则需要将文本字段的clearButtonMode
属性设置为UITextFieldViewModeAlways
。您当前配置文本字段的方式,清除按钮仅在编辑文本字段时显示。
clearButtonMode
属性给出了什么值,只有相关的清除按钮才会显示,也就是说,如果有什么要清除的话。如果文本字段为空,则无需显示清除按钮。