功能,用UIDatePicker 和UIToolbar
实现点击文本框弹出日期选择空间.
点击确定按钮获取时间显示到对应的Text Field里面,点击取消按钮隐藏键盘.
1.创建textField控件,并生成属性.
xcode版本不一样,textField显示的格式也不一样,建议大家可以在text文本框里面设置一个背景图片.这样在什么样的版本下显示的都一样.
@property (weak, nonatomic) IBOutlet UITextField *textField;
2.创建一个日期选择控件并设置属性
- (void)viewDidLoad {
[super viewDidLoad];
//创建日期选择控件
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
//设置控件的语言和区域,修改为中国简体字体
datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh-Hans"];
//设置控件的显示模式,显示日期和时间.
datePicker.datePickerMode = UIDatePickerModeDateAndTime;
//把这个日期选择控件设置为文本框的弹出键盘
self.textField.inputView = datePicker;
self.datePicker = datePicker; //最后解释这句代码的意思.
}
3.创建UIToobar(工具栏),并设置属性和工具栏上面的按钮以及frame.把工具栏设置成为键盘上面的工具栏
//创建UItoolbar(工具栏)以及设置属性 UIToolbar *toolBar = [[UIToolbar alloc] init]; //设置工具栏的背景色 //toolBar.barTintColor = [UIColor purpleColor]; //这个方法是继承自UIView,不建议使用. toolBar.barTintColor = [UIColor purpleColor]; //自己的方法 //设置工具栏的frame toolBar.frame = CGRectMake(0, 0, 0, 30); //把工具栏设置成为日期选择控件上面的工具栏 //inputAccessoryView方法表示键盘上面的工具栏(把控件设置为inputAccessoryView后,这个控件的frame中,只能修改height,其他的属性无法设置,所以在设置frame时,只设置了高度) self.textField.inputAccessoryView = toolBar; //为工具栏添加按钮 //添加关闭按钮 UIBarButtonItem *itemClose = [[UIBarButtonItem alloc] initWithTitle:@"关闭" style:UIBarButtonItemStylePlain target:self action:@selector(didClickCloseButton)]; //在工具栏的按钮中,只有两个按钮,前面的取消和后面的完成,工具栏中的按钮只能按顺序排放,所以中间需要加一个弹簧按钮 //添加弹簧按钮 UIBarButtonItem *itemSpring = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; //添加完成按钮 UIBarButtonItem *itemDone = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:nil action:@selector(didClickDoneButton)]; //将三个创建好的控件设置到工具栏上 toolBar.items = @[itemClose, itemSpring, itemDone];
4.实现点击取消(didClickCloseButton)和完成(didClickDoneButton)按钮时的事件
//实现点击了取消按钮的方法 -(void)didClickCloseButton { [self.view endEditing:YES]; } //实现点击完成按钮时的方法 -(void)didClickDoneButton { //1.获取用户选择的日期 //因为datePicker日期选择控件是在viewDidLoad方法里面创建的,在这里拿不到.所以创建一个属性.并且在创建好日期选择控件后赋值.(在创建日期选择控件时有说明) NSDate *selectdDate = self.datePicker.date; //2.把获取的日期转换为字符串对象,并设置到文本框中 //NSDateFormatter这个类型的对象用作就是:1.把NSDate转换成NSString 2.把NSString转换成NSDate(只能做日期和字符串之间的转换) //NSCalendar 这个是用来获取时间(NSDate)中的部分数据 //2.1创建一个日期格式化器 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //2.2设置要格式化的日期格式 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; //2.3进行转换 NSString *stringDate = [formatter stringFromDate:selectdDate]; //3.进行赋值 self.textField.text = stringDate; //4.关闭键盘 [self.view endEditing:YES];