Переключение UIPicker на клавиатуру

Я исследовал это, но нашел только то, как переключить клавиатуру на клавиатуру. Прямо сейчас у меня есть UIPicker, который появляется при нажатии на текстовое поле. В палитре есть три варианта, третий - пользовательский. Я хочу, чтобы при выборе custom UIPicker заменялся клавиатурой. Я предполагаю, что это будет сделано с помощью метода if (select == 2) { }. Мне не нужна целая куча кода, только метод замены Picker. Также я хотел бы создать панель инструментов с кнопкой возврата, чтобы вернуться к средству выбора. В настоящее время у меня есть панель инструментов с doneButton, чтобы освободить средство выбора, но мне нужно, чтобы кнопка появлялась при появлении клавиатуры, и кнопка могла переключать клавиатуру обратно в мое средство выбора.

Пока что мой выбор, инструменты и текстовое поле:

...

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSArray *array = [[NSArray alloc] initWithObjects:@"...",@"...",@"Custom", nil];
    self.PickerData = array;

...

    UIToolbar *toolBar = [[UIToolbar alloc] init];
    toolBar.barStyle = UIBarStyleBlackOpaque;
    [toolBar sizeToFit];

...

    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                               target:self
                                                                               action:nil];
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                target:self
                                                                                action:@selector(releasePicker)];


    Picker = [[UIPickerView alloc] init];
    Picker.showsSelectionIndicator = YES;
    Picker.delegate = self;
    doneButton.image = [UIImage imageNamed:@"button.png"];

    [toolBar setItems:@[flexSpace, doneButton] animated:YES];
    self.habitField.inputAccessoryView = toolBar;

    [self.habitField setEnabled: YES];

    [self.habitField setInputView:Picker];

}
- (void)releasePicker {
    [self.habitField resignFirstResponder];
}

...

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [PickerData count];
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [self.PickerData objectAtIndex:row];
}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    int select = row;
    if (select == 0) {

        ...
    }
    if (select == 1) {

        ...
    }
    if (select == 2) {

        ...

    }
}


@end

person i_duhh_bomb    schedule 16.08.2013    source источник


Ответы (1)


if (select == 2) {
      [self.habitField resignFirstResponder];
      [self.habitField setInputView:nil];
      [self.habitField becomeFirstResponder];
} 

Это в основном скрывает UIPickerView, затем удаляет его, а затем открывает клавиатуру.

Если вы хотите, чтобы UIPicker заработал, используйте этот код:

[self.habitField resignFirstResponder];
[self.habitField setInputView:PickerData];
[self.habitField becomeFirstResponder];
person Abdullah Shafique    schedule 16.08.2013
comment
как я могу заставить кнопку вернуть сборщик? - person i_duhh_bomb; 17.08.2013