2013-11-18 6 views
5

Я пытаюсь добавить панель инструментов в UIPicker. Я видел, что правильный путь этот путь:Кнопки панели инструментов UIPickerView не работают

UIToolbar* toolbarWeight= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)]; 
UIBarButtonItem *barButtonDone1 = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                       style:UIBarButtonItemStyleBordered target:self action:@selector(gotoNextField:)]; 
[toolbarWeight setItems:[NSArray arrayWithObject:barButtonNext1] animated:YES]; 

weightPickerView = [[UIPickerView alloc]init]; 
[weightPickerView addSubview:toolbarWeight]; 

В то время как:

-(IBAction)gotoNextField:(id)sender{ 
    NSLog(@"Works"); 
} 

Початкоотделитель работает просто отлично, но кнопка не работает. После выполнения некоторых исследований, я попробовал этот подход: (я подозревал, что проблема была связана с действием UIBarButtonItem)

UIButton* myBtn = [[UIButton alloc]init]; 
myBtn.frame = CGRectMake(0,0,50,24); 
[myBtn addTarget:self action:@selector(gotoNextField:) forControlEvents:UIControlEventTouchUpInside]; 
[myBtn setTitle:@"Next!" forState:UIControlStateNormal]; 
[myBtn setBackgroundColor:[UIColor orangeColor]]; 
UIBarButtonItem *barButtonNext1 = [[UIBarButtonItem alloc] initWithCustomView:myBtn]; 
[toolbarWeight setItems:[NSArray arrayWithObject:barButtonNext1] animated:YES]; 

Не работает. Кнопка появляется, но не выбирается/не реагирует на touchUpInside.

+0

«Не работает», вы имеете в виду, что ваша кнопка появляется на экране, но ничего не происходит, когда вы нажимаете на нее? –

+0

Точно. Я отредактирую вопрос. –

ответ

1

Как добавление панели инструментов в панель выбора, панель инструментов добавляется за сборщиком, не позволяя кнопкам реагировать на события касания.

Инкапсулирует как сборщик, так и панель инструментов в представлении, и делает его inputView (чтобы сделать сборщик и всплывающее окно панели инструментов вместе) обеспечивает желаемое решение.

weightPickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 44, 320, 216)]; 
weightPickerView.tag = 13; 
UIView* genericWeightView = [[UIView alloc]initWithFrame:CGRectMake(0, 219, 320, 266)]; 
[genericWeightView addSubview:toolbarWeight]; 
[genericWeightView addSubview:weightPickerView]; 

, а затем:

[weight_txtField setInputView:genericWeightView]; 
14

Вот пример для добавления UIPickerView включая панель инструментов - работы с прошивкой 7

Убедитесь реализовать интерфейсы UIPickerViewDataSource, UIPickerViewDelegate, а также осуществлять методы @selector

pickerView = [[UIPickerView alloc] init]; 
[pickerView setDataSource: self]; 
[pickerView setDelegate: self]; 
pickerView.showsSelectionIndicator = YES; 

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(itemWasSelected:)]; 
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(logoutData)]; 
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
UIBarButtonItem *clearButton = [[UIBarButtonItem alloc] initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearData)]; 
[toolBar setItems:[NSArray arrayWithObjects:cancelButton, clearButton, flexible, doneButton, nil]]; 

pickerParentView = [[UIView alloc] initWithFrame:CGRectMake(0, 60, 320, 260)]; 
[pickerParentView addSubview:pickerView]; 
[pickerParentView addSubview:toolBar]; 
[self.view addSubview:pickerParentView]; 
+0

Лучший обновленный ответ .. –

+0

Работал для меня, спасибо – santibernaldo

Смежные вопросы