您的位置:首页 > 产品设计 > UI/UE

UIDatePicker

2016-05-26 16:24 323 查看
案例:

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  datepicker