How to display UIDatePicker if user hit the UITextfield Programmatically

后端 未结 7 1507
刺人心
刺人心 2021-02-05 14:31

I\'d like to Display UIDatePicker only when user the UITextField is Clicked. When the date is picked, it should be shown in the same UITextField.I want to implement UIDatePicker

7条回答
  •  天涯浪人
    2021-02-05 15:00

    You need to add a proper selector when editing begins on UITexfield, use below code

     [txtDOB addTarget:self action:@selector(textbeginEditing:) forControlEvents:UIControlEventEditingDidBegin];
    

    And then implelemt the textbeginEditing method to open the datepicker.

    -(void)textbeginEditing:(id)sender{
    
    UIActionSheet __autoreleasing * date_sheet = [[UIActionSheet alloc] initWithTitle:@"Select the date" delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
    
    date_sheet.tag = 2;
    
    [date_sheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
    
    CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
    
    UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];
    
    datePicker.datePickerMode = UIDatePickerModeDate;
    datePicker.hidden = NO;
    datePicker.date = [NSDate date];
    
    // Implement the method labelChange
     [datePicker addTarget:self
                    action:@selector(labelChange:)
          forControlEvents:UIControlEventValueChanged];
    
    
    [date_sheet addSubview:datePicker];
    
    UISegmentedControl __autoreleasing *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
    
    closeButton.momentary = YES;    
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);    
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar;    
    closeButton.tintColor = [UIColor blackColor];
    
    [closeButton addTarget:self action:@selector(dissmissDatePicker:) forControlEvents:UIControlEventValueChanged];
    
    [date_sheet addSubview:closeButton];
    [date_sheet showInView:[[UIApplication sharedApplication] keyWindow]];    
    [date_sheet setBounds:CGRectMake(0, 0, 320, 400)];
    }
    

    labelChange method implementation

    -(void)labelChange:(UIDatePicker *)sender{
    NSDateFormatter __autoreleasing *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
    [dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
     dateFormat.dateStyle = NSDateFormatterMediumStyle;
     NSString *dateString =  [dateFormat stringFromDate:sender.date];
     txtDOB.text = dateString; 
    }
    

提交回复
热议问题