zoukankan      html  css  js  c++  java
  • IOS 日期选择

    传统方式

    一般情况下弹出日期选择的场景是:用户点击UITextField弹出日期选择,关键代码如下:

    点击UITextField弹出日期选择
    1
    2
    3
    UITextField *textField;
    textField.inputView = [[UIDatePicker alloc] init];
    textField.inputAccessoryView = [[UIToolbar alloc] init];

    但是inputView,inputAccessoryView是在UIView的父类UIResponder中定义的只读属性,UITextField重写了这2个属性并且将readonly修改成readwrite

    UIResponder
    1
    2
    @property (nullable, nonatomic, readonly, strong) UIView *inputView;
    @property (nullable, nonatomic, readonly, strong) UIView *inputAccessoryView;
    UITextField
    1
    2
    @property (nullable, readwrite, strong) UIView *inputView;            
    @property (nullable, readwrite, strong) UIView *inputAccessoryView;

    这就意味着对于普通的UIView我们是不能通过设置inputView,inputAccessoryView来弹出日期选择的。

    UIViewControler模态弹出方式

    这里我们使用ViewController模态弹出的方式实现,它可以在任何时候你想选择日期时都可以弹出来,而不局限于通过inputView,inputAccessoryView属性。

    调用方式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    - (void)showDatePicker
    {
        ISSDatePickerViewController *viewController = [[ISSDatePickerViewController alloc] init];
        viewController.minDate = [NSDate dateFromString3:@"1900-1-1"];
        viewController.maxDate = [NSDate new];
        viewController.delegate = self;
        viewController.datePickerMode = UIDatePickerModeDate;
        viewController.currentDate = [NSDate new];
        if(IS_IOS8_OR_LATER)
        {
            viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
        }
        else
        {
            viewController.modalPresentationStyle = UIModalPresentationCurrentContext;
        }
        [self presentViewController:viewController animated:YES completion:^{
            viewController.view.backgroundColor = RGBAColor(0, 0, 0, 0.3);
        }];
    }
     
    #pragma mark ISSDatePickerViewControllerDelegate
    - (void)onDatePicked:(NSDate *)date
    {
    }

    效果图:

     

     

    ISSDatePickerViewController

  • 相关阅读:
    C#?和??运算符以及合并条件表达式
    Nhibernate Batch update returned unexpected row count from update; actual row count: 0 解决方案
    js根据ClassName来删除元素(有坑误入)
    C#正则表达式(通俗易懂)
    AngularJs自定义表单验证
    基于angularJs坐标转换指令(经纬度中的度分秒转化为小数形式 )
    网页乱码问题
    交换两个数值(值类型,引用类型)
    不用临时变量,交换二个变量的值
    PDF在线预览 (flexpaper+swftools+saveaspdfandxps)
  • 原文地址:https://www.cnblogs.com/java-koma/p/5282436.html
Copyright © 2011-2022 走看看