2010-01-13 5 views
15

J'ai un UISegmentedControl qui a six segments, je veux qu'ils appellent une méthode quand la valeur change, mais aussi quand chaque segment reçoit un UIControlEventTouchDragIn parce que je veux qu'un UILabel apparaisse avec son nom quand le La personne essaie de sélectionner quelque chose dessus et fait glisser son doigt sur le contrôle, mais le contrôle segmenté ne répond pas à cet appel même quand je glisse dans la chose. S'il vous plaît aider. Peut-être que j'ai besoin de créer UIButtons sur le contrôle qui appelle les méthodes lors d'un glisser dans, mais appelez la méthode de la valeur modifiée quand ils reçoivent un robinet.UISegmentedControl delegate/Touch Events

Répondre

-6

Vous pourriez juste sous-classer le UISegmentedControl et remplacer la méthode - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { return; } pour gérer le glissement et l'emplacement des touches. Étant donné que vous ne seriez pas en mesure de dire sur quel segment le drag est en cours, il pourrait être préférable de tout faire manuellement avec le toucher et de le suivre en utilisant ces fonctions.

+1

Je souhaite qu'ils ont rendu cela plus facile à faire. VRAIMENT JE FAIS !! – Jaba

33

Peut-être que je ne comprends pas votre question mais pas pourriez-vous utiliser ceci:

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

et il suffit de remplacer le UIControlEventValueChanged par UIControlEventTouchDragIn? Ensuite, dans votre méthode d'action, faites tout ce qui doit être fait comme changer le texte d'un UILabel.

J'ai un UITAbleView avec un groupe de cellules et un UISegmentedControll dans chaque cellule et cela fonctionne très bien pour moi.

La documentation de UISegmentedControl semble être indisponible en ligne mais vous pouvez la voir dans l'organiseur de XCode et le code ci-dessus en est le premier exemple.