我怎样才能像键盘一样呈现select器视图?

我想要一个UIPickerView显示,当我按下button(就像键盘),然后离开时,用户点击屏幕上的任何地方。 我怎样才能做到这一点? 谢谢。

多一点背景:我有一个在UITableViewCell中称为月的UITextField。 现在对我来说最好的select是把UIPikcerView放在那里,用户只需要select一个月,而不必input它(这是更好的方法)。 但UIPickerView在UITableViewCell中看起来真的很丑,更不用说我不能改变它的巨大尺寸。 那么在这种情况下我该怎么做?

这是如何使用UIPickerView在UITableView中的textField。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; cell.selectionStyle= UITableViewCellSelectionStyleNone; UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(110, 10, 185, 30)]; textField.clearsOnBeginEditing = NO; textField.textAlignment = UITextAlignmentRight; textField.delegate = self; [cell.contentView addSubview:textField]; //textField.returnKeyType = UIReturnKeyDone; cell.textLabel.backgroundColor = [UIColor clearColor]; cell.detailTextLabel.backgroundColor = [UIColor clearColor]; // if you want a UIPickerView for first row... then do the following // // Here.. packSizePickerView is an object of UIPickerView if (indexPath.row == 1) { textField.tag=0; textField.delegate= self; packSizePickerView.delegate = self; packSizePickerView = [[UIPickerView alloc] init]; packSizePickerView.autoresizingMask=UIViewAutoresizingFlexibleWidth; packSizePickerView.showsSelectionIndicator=YES; textField.inputView = packSizePickerView; } // if you want to select date / months in row 2, go for UIDatePickerView // if (indexPath.row == 1) { textField.tag = 1; UIDatePicker *datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeDate; [datePicker addTarget:self action:@selector(datePickerValueChangedd:) forControlEvents:UIControlEventValueChanged]; datePicker.tag = indexPath.row; textField.delegate= self; textField.inputView = datePicker; [datePicker release]; } } // Configure the cell... NSInteger row = [indexPath row]; cell.textLabel.text = [myArray objectAtIndex:row]; return cell; 

}

并为datePickerValueChangedd

 - (void)datePickerValueChangedd:(UIDatePicker*) datePicker{ UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 50, 68, 68)]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateStyle = NSDateFormatterMediumStyle; label.text = [NSString stringWithFormat:@"%@",[df stringFromDate:datePicker.date]]; NSLog(@"I am inside the datePickerValueChanged - - %@", label.text); [df release]; globalValue1 = label.text; // use a global variable to copy the value from the pickerView. // } 

现在在textFieldDidEndEditing中:

 -(void) textFieldDidEndEditing:(UITextField *)textField { if (textField.tag ==0) [textField setText: globalValue0]; if (textField.tag ==1) [textField setText: globalValue1]; } 

并要辞职UIDatePicker,将UIView设置为UIControl和

 resignFirstResponder 

我认为你需要把你的UIPickerView放在可视屏幕的“外部”,并在按下button时将其设置为animation。 我不太确定摆脱它的最好方法是什么,但是当拾取器可见时,您可能会倾听父视图的敲击,然后将其重新制作。