J'ai une solution relativement simple à ce problème qui a bien fonctionné pour moi. En utilisant un bouton personnalisé caché, vous pouvez obtenir la fonctionnalité de prise sans reconnaissance de geste. Cette solution fonctionne pour un sélecteur avec un composant, mais je suis sûr qu'il pourrait être adapté pour travailler avec plus.
Commencez par ajouter un bouton dans Interface Builder ou par programmation. Faites-le caché et aussi large que le sélecteur, puis placez-le de sorte qu'il se trouve exactement au centre du sélecteur et également devant lui dans la hiérarchie de la vue. J'utilise une IBAction comme celle-ci pour montrer mon sélecteur. Cependant, c'est vraiment à vous de voir comment vous montrer et cacher le sélecteur.
- (IBAction)showPicker:(id)sender
{
_picker.hidden = NO;
_buttonPicker.hidden = NO;
}
Toute l'action de choisir la valeur du sélecteur se produit dans un IBAction pour l'événement UIControlEventTouchUpInside, quelque chose comme ça.
- (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;
}
}
J'ai légèrement modifié le code pour cette réponse du code de travail si des excuses si elle est cassé du tout.
Pouvez-vous expliquer pourquoi la méthode didSelectRow ne vous aide pas ici? Avez-vous essayé de l'utiliser et si oui, quel problème avez-vous eu? – DyingCactus
Le problème est que cela fonctionne comme il le suppose. : -/Fondamentalement, j'ai l'air d'un pickerView où le sélecteur a sélectionné automatiquement l'une de ses valeurs de ligne, mais il sélectionne uniquement une valeur lorsque l'utilisateur le touche. J'essayais de faire la même chose mais je ne pouvais pas. – camilo