iOS 【UIKit-UIDatePicker】

来源:互联网 发布:qt编程入门视频教程 编辑:程序博客网 时间:2024/06/06 07:47

UIDatePicker 和 UIPickerView 比较相仿。只不过UIDatePicker是对时间进行操作的。

我们经常在一些输入用户生日的表单中见过,UIDatePicker以键盘的形式弹出呈现出来。

我们接下来要完成一个这样的效果。如图:

①运行程序的时候出现生日的文本框,然后点击文本框会出现选择生日的UIDatePicker,当然这里UIDatePicker是作为文本框的键盘形式出现的。(inputView)

②选择日期,然后点击完成,日期会显示在上一步点击的文本框中


代码比较简单,我们直接看代码就好了。因为在storyboard中我们没有拖拽太多东西,只是拖拽了一个Text Field。

////  ViewController.m//  21-键盘设置////  Created by XXX on 15/11/18.//  Copyright © 2015年 XXX. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *birthdayFiled;//日期文本框@property (weak, nonatomic) UIDatePicker *datePicker;//日期选择@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.//    自定义textFiled键盘    UIDatePicker *datePicker = [[UIDatePicker alloc] init];    //    我们创建出来的键盘是默认的(英文),我们需要设置UIDatePicker的本地化。//    availableLocaleIdentifiers  可用的本地化标识,这里的返回值是一个NSArray    NSArray *iden = [NSLocale availableLocaleIdentifiers];    NSLog(@"%@",iden);//输出的是所有支持语言的标识符    datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];//更改语言,“zh”就是中文的标识符(设置本地化)//    修改datePicker的模式(只显示日期,不显示时间)    datePicker.datePickerMode = UIDatePickerModeDate;        self.birthdayFiled.inputView = datePicker;//想设置什么键盘,我们就可以自定义一个键盘,然后给inputView这个属性    //    创建UIToolbar(键盘上方的工具条)    UIToolbar *toolbar = [[UIToolbar alloc] init];//    如果不为toolbar设置bounds,在模拟器中可以正常显示toolbar,但是为其设置UIBarButtonItem的时候这些Button是全部无法点击事件的(有监听方法也不能正常点击)。我们可以理解为没有设置bounds,这个东西只是一个虚拟的,并没有实际存在,下面设置toolbar的背景颜色也是一样的道理    toolbar.bounds = CGRectMake(0, 0, 320, 44);//在storyboard中通过拖拽的toolbar是无法设置bounds的,但是用代码创建的Toolbar可以改变其中的参数(如Height)    toolbar.backgroundColor = [UIColor grayColor];//如果没有指定toolbar的位置,那么设置了背景颜色也是无法显示的。    //    创建Toolbar上面的按钮//    创建上一个按钮    UIBarButtonItem *previous = [[UIBarButtonItem alloc] initWithTitle:@"上一个" style:UIBarButtonItemStylePlain target:nil action:nil];    //    创建下一个按钮    UIBarButtonItem *next = [[UIBarButtonItem alloc] initWithTitle:@"下一个" style:UIBarButtonItemStylePlain target:nil action:nil];    //    创建弹簧    UIBarButtonItem *springBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];    //    创建完成按钮    UIBarButtonItem *finishBtn = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStylePlain target:self action:@selector(done)];    //    将创建好的4个按钮添加到Toolbar上    toolbar.items = @[previous,next,springBtn,finishBtn];    //    设置    self.birthdayFiled.inputAccessoryView = toolbar;    //    将我们创建出来的 datePicker自定义键盘 这个参数 给了我们的 属性datePicker    self.datePicker = datePicker;//    我们为什么要创建一个属性datePicker,因为我们在下面的方法中只能通过self.datePicker来访问,而不能访问我们在viewDidLoad中实例化出来的datePicker,所以在这里我们要把我们实例化出来的datePicker赋给属性datePicker}//点击完成执行方法(打印时间看看)- (void)done{    NSDate *selectedDate = self.datePicker.date;//提取datePicker的时间,也就是提取当前自定义datePicker键盘上面的时间//    NSLog(@"%@",selectedDate);//    输出一下日期,默认输出的结果是这样的:2015-11-23 01:57:22 +0000(但是我们上面是更改了datePicker的显示模式,不显示时分秒,只显示日期。所以我们要在下面更改一下输出时间的格式)    //    设置时间格式的类 NSDateFormatter    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];    dateformat.dateFormat = @"yyyy-MM-dd";//自定义日期格式模板//    将selectedDate设置成自定义的日期格式,注意stringFromDate:方法的使用格式,前面是自定义格式,后面是需要修改的NSDate对象。    NSString *dateStr = [dateformat stringFromDate:selectedDate];    NSLog(@"%@",dateStr);//    2015-11-23        self.birthdayFiled.text = dateStr;//日期文本框的文字传入    [self.birthdayFiled resignFirstResponder];//关闭键盘}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end


6 0
原创粉丝点击