点击UITextField时,在UIActionSheet中显示UIDatePicker

8

我正在创建一个闹钟应用。当点击UITextField时,我想在UIActionSheet中显示UIDatePicker


你目前尝试过什么了吗?通常在StackOverflow上,当你尝试了一些不起作用的东西时,你应该提出问题,而不是要求我们做你必须做的事情 ;) 另外,谷歌搜索可以得到答案(在StackOverflow上也是如此)。 - Zoleas
我在谷歌上搜索,但没有得到完美的答案 :( 好的,谢谢 :) - user2289379
3个回答

8

要做到这一点,您需要实现UIActionShetDelegateUITextFieldDelegate。在textFieldDidBeginEditing中,您需要像下面这样显示操作表:

-(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)];

}

@AmitJarsaniya:非常乐意 :) - Midhun MP

5

我发现,当使用文本字段和选择器时,最好只设置文本字段的输入视图,并添加自己的工具栏以方便使用。确保你已经设置了 "UITextFieldDelegate" 和 picker 方法,然后像这样连接它。

 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和按钮-如何实现?


2
您可以将UIDatePicker设置为UITextField的输入视图(@property inputView)。操作表只能包含按钮。

1
为什么呢?它看起来是一个非常优雅的解决方案! - mllm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接