2015-06-19 14 views
13

Próbuję zaimplementować UIToolbar na UIDatepicker odwołać go przy dotknięciu przycisku „Gotowe”. Ale kiedy stukam w przycisk, datepicker przewija się, a przycisk akcji nie działa.UIDatePicker z UIToolbar

Oto mój kod:

datepicker = [[UIDatePicker alloc] initWithFrame:CGRectZero]; 
[datepicker setDatePickerMode:UIDatePickerModeDate]; 
[datepicker addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged]; 

UIToolbar *toolbar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,44)]; 
toolbar.barStyle = UIBarStyleDefault; 
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismiss)]; 

[toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]]; 
[datepicker addSubview:toolbar]; 

Moja datepicker:

UIDatePicker

Dziękuję za pomoc.

+1

Czy zastosowałeś metodę "zwalniania"? –

Odpowiedz

21

Jeśli używasz UITextField ustawić

textField.inputAccessoryView = toolbar; 
textField.inputView = datepicker; 
2

Musisz ustawić inputAccessoryView i InputView się do swojego UITextField

txtField.inputAccessoryView = toolBar; 
txtField.inputView = datePickerView; 
0
remove this line from your code: 
[datepicker addSubview:toolbar]; 
and add dismiss method nd add 
txtCurrent.inputAccessoryView = toolbar; in didbeginEditing. 

-(void)textFieldDidBeginEditing:(UITextField *)textField { 

    txtCurrent = textField; 
    [datePicker setHidden:NO]; 
    txtCurrent.inputAccessoryView = toolbar; 
    if ([textField.text isEqualToString:@""]) { 

     NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
     NSDate *eventDate = [NSDate date]; 
     [dateFormat setDateFormat:@"MM/dd/yyyy"]; 
     NSString *dateString = [dateFormat stringFromDate:eventDate]; 
     textField.text = [NSString stringWithFormat:@"%@",dateString]; 
     } 
     [textField setInputView:datePicker]; 
} 
-(void)dismiss{ 
    datePicker.hidden = YES; 
    [self.view endEditing:YES]; 

} 
0

Spróbuj [self.view addSubview:toolbar];

picker = [[UIDatePicker alloc] init]; 
picker.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
picker.datePickerMode = UIDatePickerModeTime; 

[picker addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged]; 
//CGSize pickerSize = [picker sizeThatFits:CGSizeZero]; 
picker.frame = CGRectMake(0.0, self.view.frame.size.height - 250, self.view.frame.size.width, 250); 
picker.backgroundColor = [UIColor whiteColor]; 

toolbar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,self.view.frame.size.height - 294,self.view.frame.size.width,44)]; 
toolbar.barStyle = UIBarStyleDefault; 
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

UIButton* infoButton = [UIButton buttonWithType: UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(dismiss) forControlEvents:UIControlEventTouchDown]; 

UIBarButtonItem* doneButton =[[UIBarButtonItem alloc]initWithCustomView:infoButton]; 



[toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft, doneButton, nil]]; 


[self.view addSubview:toolbar]; 


[self.view addSubview:picker]; 
Powiązane problemy