Изменить значение uidatepicker с помощью кнопки на InputAccessoryView

У меня есть UIDatePicker, который создается программно (как первый ответчик), когда пользователь нажимает текстовое поле в моем представлении. Это происходит внутри цикла for, поэтому в моем коде нет ссылки на этот сборщик. У меня также есть панель инструментов поверх средства выбора, которая добавляется в средство выбора как inputAccessoryView. У меня есть кнопка Готово, которая увольняет первого респондента. Все идет нормально.

Я хочу добавить еще одну кнопку на панель инструментов, кроме кнопки Готово, которая изменит значение средства выбора. Нет UIDatePickerDelegate, который позволит мне отслеживать активное средство выбора.

Я всегда могу определить переменные класса для каждого из моих средств выбора и, таким образом, сохранить ссылки вручную. Но есть ли простой способ сделать это, когда я могу напрямую получить доступ к inputView из inputAccessoryView?


person rgamber    schedule 05.05.2016    source источник
comment
можешь показать свой код?   -  person Prashant Tukadiya    schedule 05.05.2016


Ответы (1)


это в файле some.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

{
     IBOutlet UIDatePicker *picker1;
     IBOutlet UITextField *txtFld;

}
@property (nonatomic, retain) UIToolbar *keyboardToolbar;

@end

В каком-то.m файле

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
 picker1=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];//frames are just for demo
 [txtFld setInputView:picker1];
}

- (void)keyboardWillShow:(NSNotification *)notification
{
    if(keyboardToolbar == nil) {
        keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 410, 320, 44)] ;
        [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];
        [keyboardToolbar sizeToFit];

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.4];

        UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

        UIBarButtonItem *doneButton1 =[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)];
        NSArray *itemsArray = [NSArray arrayWithObjects:flexButton,doneButton1, nil];

        [keyboardToolbar setItems:itemsArray];


        [txtFld setInputAccessoryView:keyboardToolbar];
        [self.view addSubview:keyboardToolbar];
        [UIView commitAnimations];
    }
}



-(void)resignKeyboard {

    [keyboardToolbar removeFromSuperview];
    [txtFld resignFirstResponder];
///do nescessary date calculation here

    }
person Gaurav Patel    schedule 05.05.2016