Iphone 如何使用UIDatePicker?

Iphone 如何使用UIDatePicker?,iphone,objective-c,uidatepicker,Iphone,Objective C,Uidatepicker,我在ViewControlr上有一个按钮,我想打开一个UIDatePicker。我想我需要把它制作成动画 到目前为止,我已经在IB中的单独视图中设置了按钮和UIDatePicker。我认为以一种方式提出这个问题是最有意义的 要链接UIDatePicker以通过单击按钮滑入视图,然后滑出视图,需要哪些代码 谢谢。您想保留对UIDatePicker的引用,然后可以使用UIView来设置日期选择器的进出动画。我会将选择器包装在UIView中,以便您可以添加隐藏按钮或相关控件 在头文件中: @inter

我在ViewControlr上有一个按钮,我想打开一个UIDatePicker。我想我需要把它制作成动画

到目前为止,我已经在IB中的单独视图中设置了按钮和UIDatePicker。我认为以一种方式提出这个问题是最有意义的

要链接UIDatePicker以通过单击按钮滑入视图,然后滑出视图,需要哪些代码


谢谢。

您想保留对UIDatePicker的引用,然后可以使用
UIView
来设置日期选择器的进出动画。我会将选择器包装在UIView中,以便您可以添加隐藏按钮或相关控件

在头文件中:

@interface MyControllerWithSlidingDatePicker : UIViewController{

  //If you use Interface builder, use this
  IBOutlet IDatePicker *picker; 
  //If you aren't using IB, use this
  //UIDatePicker *picker; 

}

@property (nonatomic, retain) UIDatePicker *picker;

@end
#import "MyControllerWithSlidingDatePicker.h"

@implementation MyControllerWithSlidingDatePicker

  - (id) init{
    self = [super init];
    if(self){
       //If you use Interface Builder, skip this part.

       UIDatePicker *dp = [[UIDatePicker alloc] init];
       //Configure your picker

       self.picker = dp;

       [dp release];

    }

    return self;  
  }

 - (IBAction)slidePickerIn{
   //Position the picker out of site
   [self.picker setFrame:CGRectMake(0,self.view.frame.size.height,self.width,self.picker.frame.size.height];

   //Add the picker to the view
   [self.view addSubview:self.picker];

   //This animation will work on iOS 4
   //For older iOS, use "beginAnimation:context"
   [UIView animateWithDuration:1.0 animations:^{

      [self.datePicker setFrame:CGRectMake0,self.view.frame.size.height-self.datePicker.frame.size.height,self.datePicker.frame.size.width,self.datePicker.frame.size.height];

   }  

 }

 - (void)dealloc{
   [picker release];
   [super dealloc];
 }

@end
和您的实现文件:

@interface MyControllerWithSlidingDatePicker : UIViewController{

  //If you use Interface builder, use this
  IBOutlet IDatePicker *picker; 
  //If you aren't using IB, use this
  //UIDatePicker *picker; 

}

@property (nonatomic, retain) UIDatePicker *picker;

@end
#import "MyControllerWithSlidingDatePicker.h"

@implementation MyControllerWithSlidingDatePicker

  - (id) init{
    self = [super init];
    if(self){
       //If you use Interface Builder, skip this part.

       UIDatePicker *dp = [[UIDatePicker alloc] init];
       //Configure your picker

       self.picker = dp;

       [dp release];

    }

    return self;  
  }

 - (IBAction)slidePickerIn{
   //Position the picker out of site
   [self.picker setFrame:CGRectMake(0,self.view.frame.size.height,self.width,self.picker.frame.size.height];

   //Add the picker to the view
   [self.view addSubview:self.picker];

   //This animation will work on iOS 4
   //For older iOS, use "beginAnimation:context"
   [UIView animateWithDuration:1.0 animations:^{

      [self.datePicker setFrame:CGRectMake0,self.view.frame.size.height-self.datePicker.frame.size.height,self.datePicker.frame.size.width,self.datePicker.frame.size.height];

   }  

 }

 - (void)dealloc{
   [picker release];
   [super dealloc];
 }

@end

要制作动画,只需使用另一种方法将帧更改为原始的“屏幕外”帧。

您可以省去麻烦,将UIDatePicker设置为UITextField的“键盘”。像这样:

UIDatePicker *datePicker = [UIDatePicker new];
self.dateField.inputView = datePicker;

这样,它就像一个键盘一样,可以根据需要进行输入和输出动画。您可以使用textField委托方法告诉它走开。简单的方法已经足够难了。这就是我的哲学;)

谢谢Moshe,我现在要试着实现它。但是有一个问题:当点击按钮启动这个新的日期选择器视图时,我会调用
slidePickerIn
方法,对吗?日期选择器是在init方法中设置的。一直都是同一个日期选择器。理论上,你每次都可以创建一个新的,但是你必须始终保持对它的引用,这样你才能再次隐藏它。我的意思是,我的视图上有一个按钮,当我单击按钮时,我才想看到日期选择器。当我选择日期时,选择器应该消失,我会回到我的原始视图。等等@费萨尔,你能来SO聊天室吗?当然,我现在在iOS聊天室。你完全同意@Matjan@erdemgc,尝试在inputViewNice idea上调用“resignFirstResponder”,但不能关闭选择器:(