在视图控制器上,触摸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日历视图实现日期输入相关推荐

  1. Android学习笔记(27):日历视图Calendar

    日历视图CalendarView可用于显示和选择日期. 可以调用setOnDateChangedListener()方法绑定事件监听器. 常用XML属性和相关方法: XML属性 相关方法 说明 and ...

  2. html 日期 清空,html – 删除日期输入上的“清除”按钮(iOS safari)

    实际上,通过为所有最新的浏览器指定"伪类",可以很容易地实现这一点. 如果将输入设置为"required"以消除清除按钮不起作用- – 然后尝试以下伪类-web ...

  3. HTML5日期输入类型

    HTML5日期输入类型(date) 在很多页面和web应用中都有输入日期和时间的地方,最典型的是订飞机票,火车票,酒店,批萨等网站. 在HTML5之前,对于这样的页面需求,最常见的方案是用Javasc ...

  4. 日历视图的XML属性

    日历视图的XML属性 : -- 设置样式 : android:dateTextAppearance, 设置日期文字显示样式; -- 设置首日 : android:firstDayOfWeek, 设置星 ...

  5. ogg 查看某条更新_明道云Web 6.1更新:日历视图上线

    更新时间:2020年12月22日(周二)19点 预计时长:2小时 是否停服:否 版本代号:Web 6.1(移动端需同步强制更新) 主要更新功能 日历视图 日历视图让用户能从时间维度排列并管理业务数据, ...

  6. 给大家介绍一个日期输入控件javascript实现,我修改了下,符合我的习惯了,^_^!...

    最终效果如图: <formname="form1"method="post"action=""> <p> <i ...

  7. Android日历视图

    In this tutorial, we'll be discussing the Calendar Widget using the CalendarView class in our Androi ...

  8. outlook ios日历_如何从Outlook 2013中的日历中删除假期

    outlook ios日历 Have you added holidays to your calendar in Outlook and now you want to remove them? M ...

  9. 《任务T日历视图方案》设计实现方法

    前文介绍了基于<任务T日历视图方案>的总体设计结构,对事务性项目工作的全过程管理总结了一套分析设计方法.本文重点介绍任务T日历视图的设计方法和实现内容. 任务T日历视图主要包括五个元素,即 ...

最新文章

  1. 520这天,我突然意识到,她根本配不上我这么聪明的男人
  2. 货物与产品的区别_详解海外仓与保税仓的区别特点!
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1068:与指定数字相同的数的个数
  4. 26.python常用端口号
  5. Cert manager自动签发/更新证书
  6. 通过python实现linux切换用户_Python操作远程服务器切换到root用户
  7. 指令数据采集(五)--指令的条件的执行判断
  8. oracle中job的retry次数,有大佬帮忙看下我安装过程中到底出啥问题了么..
  9. Object对象转JSON字符串
  10. 英语流利说 level4 unti2 part1-extinction events 1
  11. Jaca定时任务-01-进程级别的Timer,ScheduledExecutorService,springtask
  12. 如何安装arm交叉工具链及问题解决
  13. Niagara内容示例 1.3 Simple GPU Emitter
  14. 针对面试官提出的WPF逻辑树和视觉树
  15. 如何在SuperMap iDesktop制作卫星地图
  16. 如何使用标贝开放平台的语音识别、语音合成等服务
  17. 用ECS做HexMap:鼠标点击六边形单元涂色
  18. IMU内参标定以及初始化(9轴IMU,比6轴多三个姿态角信息)
  19. linux文件目录挂载点,挂载点 文件通配符 目录的一些理解
  20. GEE|时间序列分析(四)

热门文章

  1. qu.la网站上的小说爬取
  2. php mysql cms 商城,国内最常用的PHP+MySql免费CMS系统大全
  3. java 泛型反射_Java使用反射来获取泛型信息示例
  4. jquery ajax 省 城市 二级菜单 源码,利用了jquery的ajax实现二级联互动菜单
  5. 遗传算法c语言程序,遗传算法c语言代码.doc
  6. 三相四线怎样查漏电_制冷机组三相四线与三相五线有什么区别?
  7. VS2012/13本地发布网站详细步骤(可带数据库)
  8. 外链引入css有哪些方式_引入CSS样式表的方式有哪些?
  9. mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.
  10. c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...