UISegmentedControl не отвечает на UIControlEventValueChanged в UIToolbar

Я создал элемент управления с некоторыми элементами

NSArray *items = [NSArray arrayWithObjects: @"First", @"Second", @"Third",  nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:items];

Я добавил цель в элемент управления

[segmentedControl addTarget:self
                     action:@selector(controlTapped:)
           forControlEvents:UIControlEventValueChanged];

Затем я добавил свой сегментированный элемент управления на панель инструментов

[toolbar setItems:[NSArray arrayWithObject:
                          [[[UIBarButtonItem alloc]initWithCustomView:segmentedControl]autorelease]]];

В результате segmentedControl не отвечает на нажатие пользователем.

Вот пустой пустой метод

-(void) controlTapped:(id)sender {

}


person B.S.    schedule 26.03.2012    source источник
comment
Было бы полезно, если бы вы тоже могли записать свой controlTapped: метод!   -  person tipycalFlow    schedule 26.03.2012
comment
Я добавил метод, но он пуст. Этот код работает, когда я добавляю сегментированный элемент управления на панель навигации, но на панели инструментов этого не происходит.   -  person B.S.    schedule 26.03.2012
comment
Он объявлен и имеет некоторый код, который не вызывает, например: это код NSLog (@ ...). Проблема не в методе, потому что он работает в навигационной панели. Я думаю, что сегментированный элемент управления не хочет быть настраиваемым представлением uibarbuttonitem   -  person B.S.    schedule 26.03.2012


Ответы (1)


Есть аналогичный вопрос, который задавался и отвечал раньше (так что можно добавить UISegmentedControl в панель инструментов), но я думаю, что проблема в том, что вы использовали неправильный метод для установки элементов. Я прошел через документация Apple и не удалось найти setItems: метод. Используйте setItems:animated: вместо этого.

РЕДАКТИРОВАТЬ- Я проверил это, сделав образец проекта, и он работал нормально. Я пробовал использовать ваш код и свои предложения, и это сработало в обоих направлениях! Используйте точку останова, чтобы быть уверенным, что элемент управления переходит (или не переходит) в метод controlTapped:.

person tipycalFlow    schedule 26.03.2012
comment
Я изменил setItems на setItems: animated, но ничего нового не произошло. Я все еще вижу элемент управления сегментом, но не могу изменить выбранное значение :( - person B.S.; 26.03.2012
comment
На самом деле спасибо) Я совершил идиотскую ошибку, установил неправильный кадр для сегментированного представления, и это привело к тому, что я не реагировал на нажатие. - person B.S.; 26.03.2012
comment
Не волнуйтесь ... такие ошибки случаются постоянно - person tipycalFlow; 26.03.2012