ios日历视图实现日期输入
在视图控制器上,触摸textfield,打开的不是虚拟键盘,也不是datepicker,也不要actionsheet,要一个类似html上的日历输入框。
这类控件有很多开源的,但目标不是我想要的。参考kal,自己实现了一个这类功能的日历视图。
日历视图以自定义视图的方式实现,再add到视图控制器的view上,最后通过日历视图的delegate将自身remove掉。
在textFiled的- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField的方法中增加一个操作,打开日历输入视图。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
GTMLoggerDebug(@"textField tag is %d", textField.tag);
// [self performSegueWithIdentifier:@"calendarViewCtl" sender:self];
[self testCalView];
return NO;
}
日历视图所需要的日期数据,通过一个方法获取,主要还是从系统自带的NSCalendar上获取。
- (void)testCalView
{
self.logicDao = [[XYCalendarDao alloc] initForDate:[NSDate date]];
calView = [[XYCalView alloc] initWithFrame:self.view.frame logicDao:self.logicDao];
calView.delegate = self;
CATransition *transition = [CATransition animation];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
transition.duration = 0.6f;
transition.fillMode = kCAFillModeForwards;
transition.removedOnCompletion = YES;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[calView.layer addAnimation:transition forKey:@"transition"];
NSLog(@"calView is %@", NSStringFromCGRect(calView.frame));
[self.view addSubview:calView];
}
在日历视图类上,调用它的delegate方法,关闭自己。
这是一个XYCalView的delegate的方法。
- (void)slideOutCalView:(XYCalDate *)selectedDate
{
[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
calView.frame = CGRectMake(0, calView.frame.size.height, calView.frame.size.width, calView.frame.size.height);
} completion:^(BOOL finished) {
[calView removeFromSuperview];
}];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *strDate = [dateFormatter stringFromDate:[selectedDate NSDate]];
self.testCalendar.text = strDate;
}
在这里,我用两种方式实现视图的动画效果,分别是CATransition和 UIView的animation。
效果图
ios日历视图实现日期输入相关推荐
- Android学习笔记(27):日历视图Calendar
日历视图CalendarView可用于显示和选择日期. 可以调用setOnDateChangedListener()方法绑定事件监听器. 常用XML属性和相关方法: XML属性 相关方法 说明 and ...
- html 日期 清空,html – 删除日期输入上的“清除”按钮(iOS safari)
实际上,通过为所有最新的浏览器指定"伪类",可以很容易地实现这一点. 如果将输入设置为"required"以消除清除按钮不起作用- – 然后尝试以下伪类-web ...
- HTML5日期输入类型
HTML5日期输入类型(date) 在很多页面和web应用中都有输入日期和时间的地方,最典型的是订飞机票,火车票,酒店,批萨等网站. 在HTML5之前,对于这样的页面需求,最常见的方案是用Javasc ...
- 日历视图的XML属性
日历视图的XML属性 : -- 设置样式 : android:dateTextAppearance, 设置日期文字显示样式; -- 设置首日 : android:firstDayOfWeek, 设置星 ...
- ogg 查看某条更新_明道云Web 6.1更新:日历视图上线
更新时间:2020年12月22日(周二)19点 预计时长:2小时 是否停服:否 版本代号:Web 6.1(移动端需同步强制更新) 主要更新功能 日历视图 日历视图让用户能从时间维度排列并管理业务数据, ...
- 给大家介绍一个日期输入控件javascript实现,我修改了下,符合我的习惯了,^_^!...
最终效果如图: <formname="form1"method="post"action=""> <p> <i ...
- Android日历视图
In this tutorial, we'll be discussing the Calendar Widget using the CalendarView class in our Androi ...
- outlook ios日历_如何从Outlook 2013中的日历中删除假期
outlook ios日历 Have you added holidays to your calendar in Outlook and now you want to remove them? M ...
- 《任务T日历视图方案》设计实现方法
前文介绍了基于<任务T日历视图方案>的总体设计结构,对事务性项目工作的全过程管理总结了一套分析设计方法.本文重点介绍任务T日历视图的设计方法和实现内容. 任务T日历视图主要包括五个元素,即 ...
最新文章
- 520这天,我突然意识到,她根本配不上我这么聪明的男人
- 货物与产品的区别_详解海外仓与保税仓的区别特点!
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1068:与指定数字相同的数的个数
- 26.python常用端口号
- Cert manager自动签发/更新证书
- 通过python实现linux切换用户_Python操作远程服务器切换到root用户
- 指令数据采集(五)--指令的条件的执行判断
- oracle中job的retry次数,有大佬帮忙看下我安装过程中到底出啥问题了么..
- Object对象转JSON字符串
- 英语流利说 level4 unti2 part1-extinction events 1
- Jaca定时任务-01-进程级别的Timer,ScheduledExecutorService,springtask
- 如何安装arm交叉工具链及问题解决
- Niagara内容示例 1.3 Simple GPU Emitter
- 针对面试官提出的WPF逻辑树和视觉树
- 如何在SuperMap iDesktop制作卫星地图
- 如何使用标贝开放平台的语音识别、语音合成等服务
- 用ECS做HexMap:鼠标点击六边形单元涂色
- IMU内参标定以及初始化(9轴IMU,比6轴多三个姿态角信息)
- linux文件目录挂载点,挂载点 文件通配符 目录的一些理解
- GEE|时间序列分析(四)
热门文章
- qu.la网站上的小说爬取
- php mysql cms 商城,国内最常用的PHP+MySql免费CMS系统大全
- java 泛型反射_Java使用反射来获取泛型信息示例
- jquery ajax 省 城市 二级菜单 源码,利用了jquery的ajax实现二级联互动菜单
- 遗传算法c语言程序,遗传算法c语言代码.doc
- 三相四线怎样查漏电_制冷机组三相四线与三相五线有什么区别?
- VS2012/13本地发布网站详细步骤(可带数据库)
- 外链引入css有哪些方式_引入CSS样式表的方式有哪些?
- mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.
- c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...