У меня есть относительно простое решение этой проблемы, которое хорошо сработало для меня. Используя скрытую пользовательскую кнопку, вы можете достичь функциональности касания без распознавателя жестов. Это решение работает для сборщика с одним компонентом, однако я уверен, что оно может быть адаптировано для работы с большим количеством компонентов.
Сначала добавьте кнопку, либо в Интерфейсном Разработчике, либо программно. Сделайте его скрытым и таким же широким, как сборщик, затем поместите его так, чтобы он находился точно в центре сборщика, а также перед ним в иерархии представлений.
Я использую такой IBAction, чтобы показать мой сборщик. Однако вам решать, как показать и скрыть сборщик.
- (IBAction)showPicker:(id)sender
{
_picker.hidden = NO;
_buttonPicker.hidden = NO;
}
Все действие по выбору значения средства выбора происходит в IBAction для события UIControlEventTouchUpInside, что-то вроде этого.
- (IBAction)selectPicker:(id)sender
{
//Hide the button so that it doesn't get in the way
_buttonPicker.hidden = YES;
//Make sure we're within range
NSInteger max = _values.count;
NSInteger row = [_picker selectedRowInComponent:0];
if(row >= 0 && row < max) {
NSString *value = [_values objectAtIndex:row];
//Set the label value and hide the picker
_label.text = value;
_picker.hidden = YES;
}
}
Я немного изменил код этого ответа из рабочего кода, поэтому извиняюсь, если он вообще не работает.