How to display UIDatePicker if user hit the UITextfield Programmatically

后端 未结 7 1333
刺人心
刺人心 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:14

    • First indicate that your class conforms to the UITextFieldDelegate protocol

    • Then in viewDidLoad set the delegate and tag of your text field.

       yourTextField.delegate = self;  
       yourTextField.tag = 111;
      
    • Then implement the following delegate method:

      - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {   
          if (textField.tag==111) {  
              [self showDatePicker];  
          }  
          return YES;  
      }
      
    • Now implement a function showDatePicker

      - (void)showDatePicker {  
          datePicker = [[UIDatePicker alloc] init];
          datePicker.backgroundColor=[UIColor whiteColor];
      
          UIToolbar *toolbar = [[UIToolbar alloc]init];
          [toolbar sizeToFit];
      
          UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(showSelectedDate)];    
      
          doneBtn.tintColor = [UIColor whiteColor];  
      
          UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];    
      
          toolbar.backgroundColor = [UIColor colorWithRed:5.0/255.0 green:110.0/255.0 blue:170.0/255.0 alpha:1];  
      
          [toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft,doneBtn ,nil]];  
      
          [yourTextField setInputAccessoryView:toolBar];  
      
          yourTextField.inputView = datePicker;   
      }
      

    OR you can do it simply in your viewDidLoad as follows:

    datePicker = [[UIDatePicker alloc] init];
    datePicker.backgroundColor = [UIColor whiteColor];  
    
    UIToolbar *toolbar = [[UIToolbar alloc]init]; 
    
    [toolbar sizeToFit];    
    
     UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self
     action:@selector(showSelectedDate)];    
    
     doneBtn.tintColor = [UIColor whiteColor];  
    
     UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
     target:nil action:nil];    
    
    toolbar.backgroundColor = [UIColor colorWithRed:5.0/255.0 green:110.0/255.0 blue:170.0/255.0 alpha:1];  
    
    [toolBar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneBtn , nil]];  
    
    [yourTextField setInputAccessoryView:toolbar];  
    
    yourTextField.inputView = datePicker;
    

提交回复
热议问题