ios日历视图实现日期输入

来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:

在视图控制器上,触摸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。

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1