Mam stosunkowo proste rozwiązanie tego problemu, który działa dobrze dla mnie. Za pomocą ukrytego przycisku niestandardowego można uzyskać dostęp do funkcji dotknięcia bez rozpoznawania gestów. To rozwiązanie działa na zbieracz z jednym komponentem, ale jestem pewien, że można go przystosować do pracy z większą ilością.
Najpierw dodaj przycisk w programie Interface Builder lub programowo. Ustaw go tak, aby był ukryty i tak szeroki, jak selektor, a następnie umieść go tak, aby znajdował się dokładnie pośrodku stołu, a także przed nim w hierarchii widoku.
Używam IBAction w ten sposób, aby pokazać mój selektor. Jednak naprawdę zależy od Ciebie, w jaki sposób pokazujesz i ukrywasz próbnik.
- (IBAction)showPicker:(id)sender
{
_picker.hidden = NO;
_buttonPicker.hidden = NO;
}
Cała akcja wyboru wartości kompletacji dzieje w IBAction dla zdarzenia UIControlEventTouchUpInside, coś takiego.
- (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;
}
}
Lekko zmodyfikowałem kod dla tej odpowiedzi z kodu roboczego, więc przepraszam, jeśli jest w ogóle uszkodzony.
Czy możesz wyjaśnić, dlaczego metoda didSelectRow tutaj nie pomaga? Czy próbowałeś go użyć i jeśli tak, jaki masz problem? – DyingCactus
Problem polega na tym, że działa tak, jak zakłada. : -/Zasadniczo wyglądam jak pickerView, w którym selektor wybrał automatycznie jedną z wartości wiersza, ale wybiera tylko wartość, gdy użytkownik ją dotknie. Próbowałem zrobić to samo, ale nie mogłem. – camilo