在UITextField上点击时在UIActionSheet中显示UIDatePicker

我正在创build闹钟应用程序。 我想在UITextField点击时在UIActionSheet显示UIDatePicker

为此,您需要实现UIActionShetDelegateUITextFieldDelegatetextFieldDidBeginEditing您需要显示如下的操作表:

 -(void)textFieldDidBeginEditing:(UITextField *)sender { [self showAction]; } -(void) showAction { UIActionSheet *asheet = [[UIActionSheet alloc] initWithTitle:@"Pick the date." delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Select", nil]; [asheet showInView:[self.view superview]]; [asheet setFrame:CGRectMake(0, 117, 320, 383)]; [asheet release]; } - (void)willPresentActionSheet:(UIActionSheet *)actionSheet { UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 320, 216)]; //Configure picker... [pickerView setMinuteInterval:5]; [pickerView setTag: kDatePickerTag]; //Add picker to action sheet [actionSheet addSubview:pickerView]; [pickerView release]; //Gets an array af all of the subviews of our actionSheet NSArray *subviews = [actionSheet subviews]; [[subviews objectAtIndex:SelectButtonIndex] setFrame:CGRectMake(20, 266, 280, 46)]; [[subviews objectAtIndex:CancelButtonIndex] setFrame:CGRectMake(20, 317, 280, 46)]; } 

我发现,使用文本框与拾取器时,最简单的方法就是设置文本框的input视图并添加自己的工具栏以方便使用。 确保你有你的“UITextFieldDelegate”和select器方法设置,然后像这样挂钩它。

  yourtextfield.delegate = self; [yourtextfield setInputView:yourpickerview]; [yourtextfield setInputAccessoryView:doneBar]; doneBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; [doneBar setBarStyle:UIBarStyleBlackTranslucent]; UIBarButtonItem *spacer2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; [doneBar setItems: [NSArray arrayWithObjects:spacer2, [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:yourtextfield action:@selector(resignFirstResponder)],nil ] animated:YES]; 

但是如果你更愿意使用一个动作表,那么这是基本的设置:

在操作中添加UIPickerView&abutton – 如何?

您可以将UIDatePicker设置为UITextFieldinput视图( @property inputView )。 ActionSheet只能包含button。