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