UIDatePicker

案例:

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;

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值