2010-01-13 15 views
15

Ho un UISegmentedControl con sei segmenti, voglio che chiamino un metodo quando il valore cambia, ma anche quando ogni segmento ottiene un UIControlEventTouchDragIn perché voglio che UILabel venga visualizzato con il suo nome quando il la persona sta cercando di selezionare qualcosa su di essa e trascina il dito sul controllo, ma il controllo segmentato non chiama questa chiamata anche quando trascino nella cosa. Per favore aiuto. Forse ho bisogno di creare UIButtons sul controllo che chiamano metodi su un trascinamento, ma chiamano il metodo del valore modificato quando ricevono un tocco.UISegmentedControl delegate/Touch Events

risposta

-6

Si potrebbe semplicemente creare una sottoclasse di UISegmentedControl e sovrascrivere il metodo - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { return; } per gestire il trascinamento e la posizione dei tocchi.

Essendo che non si è in grado di dire su quale segmento il trascinamento è attivo, potrebbe essere meglio fare tutto manualmente con il tocco e tracciarlo utilizzando tali funzioni.

+1

Vorrei che lo facessero più facile. DAVVERO FACCIO !! – Jaba

33

Forse non capisco la sua domanda, ma non poteva semplicemente utilizzare questo:

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

e basta sostituire il UIControlEventValueChanged da UIControlEventTouchDragIn? Quindi nel tuo metodo di azione fai tutto il necessario, come cambiare il testo di un UILabel.

Ho un UITAbleView con un mucchio di celle e un UISegmentedControll in ogni cella e funziona perfettamente per me.

La documentazione di UISegmentedControl sembra non essere disponibile online ma è possibile vederla nell'Organizzatore di XCode e il codice sopra riportato è il primo esempio.