2015-05-30 14 views
14

Ho un controllo HMSegmented con 4 segmenti. Quando è selezionato, dovrebbe apparire. E quando il pop up non funziona, e cercando di fare clic sullo stesso indice di segmento dovrebbe mostrare nuovamente il pop-up. Usando il seguente non si ha alcuna azione sul click dello stesso indice di segmento dopo il pop up dissimulato.Azione maniglia rapida sul controllo segmentato

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged) 
+0

considerare questo invece http : //stackoverflow.com/questions/1620972/uisegmentedcontrol-register-taps-on-selected-segment – Gerald

risposta

9

si imposta il tuo obiettivo a fuoco solo quando il cambiamento di valore, quindi se si seleziona lo stesso segmento il valore non cambierà e il popover non visualizzerà, provare a cambiare l'evento per TouchUpInside, quindi sarà sparato ogni volta che si tocca all'interno del segmento

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 
+1

Ho già provato questo utilizzando l'evento TouchUpInside. Ma non sta funzionando. Nessun evento si verifica durante l'utilizzo. – Poonam

+1

hai provato anche. All Events? – Icaro

+0

Grazie ... Sta funzionando bene. :) – Poonam

17

È possibile aggiungere lo stesso obiettivo per più eventi.

Allora supponiamo tua segmentedControlValueChanged: assomiglia a questo:

func segmentedControlValueChanged(segment: UISegmentedControl) { 
    if segment.selectedSegmentIndex == 0 { 
    } 
    ... 
} 

Quindi è possibile aggiungere target per più di 1 eventi a chiamare questa funzione:

segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged) 
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 

Ora la funzione verrà chiamato quando un il valore è stato cambiato e quando l'utente rilascia il suo dito.

9

con swift3 usarlo in questo modo:

con mittente, utilizzare il nome del mittente mittente quando si desidera accedere nell'azione:

segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged) 

o

addTarget(self, action: #selector(changeWebView), for: .valueChanged) 
Problemi correlati