UIPicker : Rolling, Srolling, animated ?

Bonjour,


 


J'ai un problème d'interface avec les UIPickers. Lorsque la roue tourne on ne sait pas qu'elle valeur est sélectionnée, c'est le principe puisque l'utilisateur cherche. Cependant je mets à  jour des informations à  partir de la sélection dans le picker. Forcément quand la roue tourne mes informations ne sont pas à  jour.


 


Je cherche une solution soit :


 


  • Recevoir en continue le row et le composent qui est affiché
  • Savoir quand la roue tourne et quand elle s'arrête (je pourrais alors grisé les informations qui ne sont pas à  jour jusqu'à  ce que la sélection soit défini).

Une idée ??


 


Merci de votre aide


 


s


e


b


Mots clés:

Réponses

  • samirsamir Membre


    Je cherche une solution soit :


    • Recevoir en continue le row et le composent qui est affiché
    • Savoir quand la roue tourne et quand elle s'arrête (je pourrais alors grisé les informations qui ne sont pas à  jour jusqu'à  ce que la sélection soit défini).


     


     C'est pas possible. Si tu regarde l'API UIPickerView, tu verra qu'elle offre la possibilité juste de savoir quel row a été sélectionné en envoyant le message à  l'objet delegate. Les développeurs/architecte/designers de ce composants ont peut être jugé que ce n'est pas important d'avoir l'information que la rue tourne ou bien d'envoyer un message à  son delegate a chaque fois que le row a changé. ( ce qui vas consommer beaucoup de resource CPU).


     


    Si j'étai toi je reverrai le principe de mon interface pour rester proche des patterns IHM iOS. 

  • iLandesiLandes Membre
    juin 2014 modifié #3

    Je te trouve un peu pessimiste.


     


    J'ai un trouvé truc qui fonctionne avec un BOOL que je place ensuite dans un KVO


     


    #pragma -mark Delegate Protocole


    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component


    {


        if (!_isAnimated) {


            [self setIsAnimated:YES];


        }


        // Do something...


        return something;


    }


     


     


    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component


    {


        


        [self setIsAnimated:NO];


        // Do something....


    }


  • iLandesiLandes Membre
    juin 2014 modifié #4

    A Supprimer,


     


    Cela fait deux fois que j'ai crée un post en double (bug ??).  Je ne sais pas supprimer un message. Admins, merci de faire le clean, désolé.


  • samirsamir Membre


    Je te trouve un peu pessimiste.




    Oui tu as raison, je me suis précipité :). désolé.


     


    J'ai juste regardé le delegate et comme j'ai pas vu une méthode documenté et claire sur ça, je me suis prononcé négativement, alors que tu peux contourner ça par une méthode du protocol data source.

  • Mon code semble marché mais il faut voir si la ruse peut résister...


    Je suis toujours preneur de vos commentaires...


Connectez-vous ou Inscrivez-vous pour répondre.