***控制层

#import "ViewController.h"
#import "CZKeyboardToolbar.h"@interface ViewController ()<CZKeyboardToolbarDelegate>
@property (strong, nonatomic) UIDatePicker *datepicker;
@property (weak, nonatomic) IBOutlet UITextField *textField;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//创建datapikcerself.datepicker = [[UIDatePicker alloc] init];//本地方self.datepicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];//日期控件格式self.datepicker.datePickerMode = UIDatePickerModeDate;//设置textfield的键盘self.textField.inputView = self.datepicker;CZKeyboardToolbar *toolbar = [CZKeyboardToolbar toolbar];//设置键盘的代理toolbar.kbDelegate = self;//设置textfield的辅助工具条self.textField.inputAccessoryView = toolbar;
}#pragma mark 自定义键盘工具条的代理方法
-(void)keyboardToolbar:(CZKeyboardToolbar *)toolbar btndidSelected:(UIBarButtonItem *)item{if (item.tag == 2) {//Done按钮点击//获取日期显示在textFieldNSDate *date = self.datepicker.date;NSLog(@"%@",date);//日期转字符串NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//设置日期格式dateFormatter.dateFormat = @"yyyyMMdd";NSString *dateStr =  [dateFormatter stringFromDate:date];self.textField.text = dateStr;

        //隐藏键盘

        [self.birthdayFiled resignFirstResponder];
}}/***  代码创建的toolbar*/
-(void)codeForToolbar{//代码创建UIToolbarUIToolbar *toolbar = [[UIToolbar alloc] init];toolbar.backgroundColor = [UIColor grayColor];//屏幕宽度CGFloat screenW = [[UIScreen mainScreen] bounds].size.width;toolbar.bounds = CGRectMake(0, 0, screenW, 44);UIBarButtonItem *previousBtn = [[UIBarButtonItem alloc] initWithTitle:@"上一个" style:UIBarButtonItemStylePlain target:nil action:nil];UIBarButtonItem *nextBtn = [[UIBarButtonItem alloc] initWithTitle:@"下一个" style:UIBarButtonItemStylePlain target:nil action:nil];UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:nil action:nil];//固定长度的按钮UIBarButtonItem *fixedBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];//代码实现要设置宽度fixedBtn.width = 10;//可拉伸的按钮UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];//添加UIToolbar里面的按钮toolbar.items = @[previousBtn,fixedBtn,nextBtn,flexible,doneBtn];
}
- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

***CZKeyboardToolbar.m

#import "CZKeyboardToolbar.h"@interface CZKeyboardToolbar()@end@implementation CZKeyboardToolbar/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {// Drawing code
}
*/
+(instancetype)toolbar{return [[[NSBundle mainBundle] loadNibNamed:@"CZKeyboardToolbar" owner:nil options:nil] lastObject];
}- (IBAction)itemBtnClick:(id)sender {//判断代理有没有实现方法if ([self.kbDelegate respondsToSelector:@selector(keyboardToolbar:btndidSelected:)]) {[self.kbDelegate keyboardToolbar:self btndidSelected:sender];}}
@end

***CZKeyboardToolbar.h

#import <UIKit/UIKit.h>@class CZKeyboardToolbar;
@protocol CZKeyboardToolbarDelegate <NSObject>@optional/***  item.tag  0 表示上一个按钮 1:下一个按钮 2:done完成按钮*/
-(void)keyboardToolbar:(CZKeyboardToolbar *)toolbar btndidSelected:(UIBarButtonItem *)item;@end@interface CZKeyboardToolbar : UIToolbar+(instancetype)toolbar;@property (weak, nonatomic) id<CZKeyboardToolbarDelegate> kbDelegate;//键盘的代理@end

转载于:https://www.cnblogs.com/ios-g/p/4742795.html

IOS第11天(4:UIDatePicker时间选择,和键盘处理,加载xib文件,代理模式)相关推荐

  1. iOS之深入解析CocoaPods的插件机制和如何加载插件整合开发工具

    一.CocoaPods 插件机制 ① Ruby 在 Ruby 中,类永远是开放的,总是可以将新的方法加入到已有的类中,除了自己的代码中,还可以用在标准库和内置类中,这个特性被称为 Ruby Open ...

  2. Threejs系列--11游戏开发--沙漠赛车游戏【初步加载地面】

    Threejs系列--11游戏开发--沙漠赛车游戏[初步加载地面] 序言 目录结构 代码一览 world/index.js代码 world/Floor.js代码 materials/Floor.js代 ...

  3. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  4. iOS CocoaPods第三方库加载本地文件或服务器上的zip文件(二)

    本篇文章重点介绍,如何加载zip文件压缩包第三方库.如果伙伴们想了解如何加载本地文件请自行翻看上篇文件. 方案: 不废话,直接上代码!编辑我们的WechatOpenSDK.podspec文件: Pod ...

  5. ios 平滑移动view_iOS 关于列表上拉(平滑加载数据)自动加载数据的问题

    项目需求 我的的列表需要改变,原来的分页加载采用的是MJRefresh框架进行加载更多数据,这需要有一个上拉动作才能触发,而我的产品的意思是当快要滑动到底部时自动加载下一页数据.我自己看了一下,发现很 ...

  6. iOS WKWebView加载本地文件之权威解说

      在实际的iOS开发中,我们有很多的地方需要通过WKWebView加载本地的文件.但是由于WKWebview存在着一些跨域的问题.UIWebView直接加载的方法不能正常使用了.这里就和大家分享一下 ...

  7. iOS开发小技巧--textField成为密码框,view加载完后textField获取焦点

    文本框安全输入:Secure Text Entry(安全文本输入) view加载完后textField获取焦点的正确做法

  8. 加载静态文件,父模板的继承和扩展(2017.11.3)

    用url_for加载静态文件 <script src="{{ url_for('static',filename='js/login.js') }}"></scr ...

  9. ios弧形进度条_iOS如何实现环形进度条加载效果

    绘制方法需要重写- (void)drawRect:(CGRect)rect,使用UIBezierPath绘制圆形动画路径,调用stroke进行绘制,如下: - (void)drawRect:(CGRe ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——(11)、ArcGIS Runtime SDK常见空间数据加载...

    ArcGIS Runtime SDK for Android 支持多种类型空间数据源.每一种都提供了相应的图层来直接加载,图层Layer是空间数据的载体,其主要继承关系及类型说明如下图所示: 转载请注 ...

最新文章

  1. 如何实现 集群化/Session 复制-doc(cluster-howto.html)
  2. Tungsten Fabric SDN — Service Chain — Heat Templates
  3. SSO CAS 探究
  4. java异步处理同步化_java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring Even...
  5. Java工程师的进阶之路-Kafka篇(一)
  6. 前端小白程序员入门之前知道这些,半年后都拿到8K+的offer
  7. ds哈希查找—二次探测再散列_哈希算法高大上?也不过如此
  8. 用U3D寻找看电视的感觉!!
  9. 华硕怎么安装linux系统教程,华硕笔记本系统如何安装win10和linux 双系统
  10. 小米android phone驱动安装,驱动安装是小米刷机第一步 小米手机驱动怎么安装 - 驱动管家...
  11. opencv+python图像匹配——模版匹配、特征点匹配
  12. 图像文字识别:Python批量识别图片中的文字并自动改名
  13. 争夺智能化船票:如何迈出第一步 ——访百度主任科学家 毕然
  14. ArcGis空间分析学习:超市选址分析
  15. 【文末下载PPT】李中文:软件成分安全分析(SCA)能力的建设与演进
  16. Linux系统的PAM模块认证文件含义说明总结
  17. 381个Android开源项目
  18. 重学java——套娃
  19. Vue.js使用CSS美化
  20. linux中license路径,Elasticsearch安装过程中的license问题解决办法

热门文章

  1. 【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
  2. 题解 P2163 SHOI2007 园丁的烦恼
  3. 列表页 编辑页 删除页
  4. Linux下环境搭建(一)——java、tomcat配置
  5. Vue使用Mint-ui的Popup, Picker组件报错问题
  6. 令人赞叹的 MySQL
  7. 借款条和还款条的写法(附模板)
  8. VS2010中的sln,suo分别是什么含义
  9. Android adb shell 启动java程序
  10. 如何使用Hasu USB to USB Controller Converter刷写tmk固件交换Caps和Ctrl