UIDatePicker

来源:互联网 发布:淘宝运营月收入多少 编辑:程序博客网 时间:2024/06/06 02:48

案例:

DatePicker的键盘处理

很多地方都会有点击textField用DatePicker替换键盘位置弹出。

》掌握UITextField如果弹出日期选择器并在键盘添加工具条
(1)设置UITextField的inputView属性为日期选择器即可
(2)熟悉UIToolbar的使用,添加UIBarButtonItem
(3)自定义一个键盘工具条,添加在键盘上,设置UITextField的inputAccessoryView属性
(4)通过代理监听键盘工具条的几个按钮

》熟悉代码实现UIToolBar

这里写图片描述

代码完成

//代码创建的toolbar- (UIToolbar *)codeCreatToolBar{    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];    toolBar.backgroundColor = [UIColor grayColor];    UIBarButtonItem *lastItem = [[UIBarButtonItem alloc] initWithTitle:@"上一个" style:UIBarButtonItemStylePlain target:nil action:nil];    UIBarButtonItem *nextItem = [[UIBarButtonItem alloc] initWithTitle:@"下一个" style:UIBarButtonItemStylePlain target:nil action:nil];    UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonItem:)];    doneItem.tag = 100;    //固定长度    UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];    //代码实现设置宽度    flexItem.width = 30;    //可拉伸的按钮    UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];    //添加toolBar的按钮    toolBar.items = @[lastItem, flexItem, nextItem, flexibleItem, doneItem];    return toolBar;}
- (void)barButtonItem:(UIBarButtonItem *)sender{    if (sender.tag == 100) {        //获取日期,显示在textField上        NSDate *date = self.datePicker.date;        //日期转字符串        NSDateFormatter *formater = [[NSDateFormatter alloc] init];        [formater setDateFormat:@"yyyyMMdd"];        NSString *dateStr = [formater stringFromDate:date];        self.textField.text = dateStr;    }}

头部文件

import "ViewController.h"#import "CustomToolbar.h"@interface ViewController ()<CustomToolbarDelegate>//如果要让键盘的位置替换成pickview,不能用stroyboard@property (strong, nonatomic) UIDatePicker *datePicker;@property (strong, nonatomic) UITextField *textField;@end
- (void)viewDidLoad {    [super viewDidLoad];    //创建pickerView    self.datePicker = [[UIDatePicker alloc] init];    //输入框    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 80, 200, 40)];    self.textField.backgroundColor = [UIColor grayColor];    [self.view addSubview:self.textField];    //NSLog(@"%@",[NSLocale availableLocaleIdentifiers]);//打印出所有国家的标识    //日期控制的本地化“zh”是中国的日期格式    self.datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];    //日期控制格式    self.datePicker.datePickerMode = UIDatePickerModeDate;    //设置textField键盘(将键盘的位置替换成datepicker)    self.textField.inputView = self.datePicker;#pragma mark - 代码方式在datepicker上面添加一个toolbar  UIToolbar *toolBar = [self codeCreatToolBar]; //设置textField的辅助工具条  self.textField.inputAccessoryView = toolBar;}

使用xib完成toolbar

1.创建xib
1.1 拖toolbar控件,然后在改空间上添加3个barbuttonItem,默认是紧挨着,如果需要间隔:
1.弹框:Flexible space…
2.固定间距:fixed space….(可以在属性中设置间距大小)

1.2 自定义继承Toolbar的视图

CustomToolbar.h//协议@class CustomToolbar;@protocol CustomToolbarDelegate <NSObject>@optional- (void)keyboardToolbar:(CustomToolbar *)toolbar btnDidSelected:(UIBarButtonItem *)barButtonItem;@end@interface CustomToolbar : UIToolbar//代理人@property (weak, nonatomic) id<CustomToolbarDelegate> delegate;//创建toolbar+ (instancetype)toolBar;@end

CustomToolbar.m

#import "CustomToolbar.h"@interface CustomToolbar ()@property (weak, nonatomic) IBOutlet UIBarButtonItem *preBarButton;@property (weak, nonatomic) IBOutlet UIBarButtonItem *nextBarButton;- (IBAction)click:(id)sender;@end@implementation CustomToolbar+ (instancetype)toolBar{  return   [[[NSBundle mainBundle] loadNibNamed:@"CustomToolbar" owner:self options:nil] lastObject];}- (IBAction)click:(id)sender {    //将这个时间传给控制器,通过代理    if ([self.delegate respondsToSelector:@selector(keyboardToolbar:btnDidSelected:)]) {        [self.delegate keyboardToolbar:self btnDidSelected:sender];    }}@end

ViewController.m

#pragma mark - xib方式    CustomToolbar *cusToolBar = [CustomToolbar toolBar];    cusToolBar.delegate = self;    self.textField.inputAccessoryView = cusToolBar;
#pragma mark - CustomToolbarDelegate methods- (void)keyboardToolbar:(CustomToolbar *)toolbar btnDidSelected:(UIBarButtonItem *)barButtonItem{    if (barButtonItem.tag == 100) {        //获取日期,显示在textField上        NSDate *date = self.datePicker.date;        //日期转字符串        NSDateFormatter *formater = [[NSDateFormatter alloc] init];        [formater setDateFormat:@"yyyyMMdd"];        NSString *dateStr = [formater stringFromDate:date];        self.textField.text = dateStr;    }}
0 0
原创粉丝点击