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;

    }


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章