ios日历视图实现日期输入
来源:互联网 发布:cisco acl 端口 编辑:程序博客网 时间:2024/04/26 19:56
在视图控制器上,触摸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;
- (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;
}
这类控件有很多开源的,但目标不是我想要的。参考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;
}
- (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日历视图实现日期输入
- iOS日历视图
- 日期-日历的实现
- 日期之 台历(输入年月日历牌
- 接收控制台输入的日期,打印日历
- iOS日历视图 FSCalendar的使用
- iOS日历、日期、时间的计算
- iOS日历、日期、时间的计算
- iOS日历、日期、时间的计算
- iOS日历、日期、时间的计算
- iOS自定义实现日历控件
- iOS 自定义日历的实现
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- JavaScript 实现日历式日期选择
- 日期控件-1.javascript实现简易日历
- mybatis 配置
- 黑马程序员_二十一 【Html、CSS、JS综合使用】
- 在oracle 10 g 下安装ASM【未曾亲自试验】
- wordpress上传文件自动重命名的方法-原创-避免中文乱码
- DBCP的配置参数
- ios日历视图实现日期输入
- CEGUI删除窗口
- smp_call_function 功能
- 大端小端的判断方法
- oracle用户赋权限
- MetaWebBlog API And XMLRPC
- 博客是给自己看的
- WEB打印的几种方案
- ogre与CEGUI结合