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

  • 相关阅读:
    vue递归组件的实现
    Vue左滑组件slider的实现
    vue 全局引用jq(打包后可能会遇到的问题)
    vue simple框架打包遇到报错问题
    HTML5 FormData实现文件上传实例
    长连接、短连接、长轮询和WebSocket
    解决axios IE11 Promise对象未定义
    Html5的map在实际使用中遇到的问题及解决方案
    Js参数RSA加密传输,jsencrypt.js的使用
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/java-koma/p/5282436.html
Copyright © 2011-2022 走看看