2013-07-10 18 views
8

Ci deve essere un modo per farlo, ma non riesco a trovarlo. Ho un pulsante che ho creato a livello di codice:Evidenzia al livello di programmazione al clic di UIButton

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(25, self.view.frame.size.height/4, 200, 350); 
[button setTitle:@"Inbox" forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 

Tutto quello che voglio è per il pulsante non per evidenziare o cambiamento di aspetto in alcun modo quando viene toccato. Finora ho provato quanto segue durante la creazione del tasto:

[button setBackgroundImage:[UIImage imageNamed:nil] forState:UIControlStateSelected | UIControlStateHighlighted]; 

E

[button setBackgroundImage:nil forState:UIControlStateSelected]; 

E

[button setAdjustsImageWhenHighlighted:NO]; 

E

button.showsTouchWhenHighlighted = NO; 

Poi nell'azione tasto ho provato :

[sender setHighlighted:!sender.isHighlighted]; 

E

[sender setSelected:!sender.isSelected]; 

nessuno di questi lavori.

+0

Hai guardato showsTouchWhenHighlighted? – KHansenSF

+0

Grazie, ho appena provato, non funziona neanche! L'ho appena aggiunto alla mia lista di cose che ho provato. – jac300

+0

Come dire '[button setBackgroundImage: [UIImage new] forState: UIControlStateSelected];' o 'adjustImageWhenHighlighted'. – danypata

risposta

9

Imposta il tuo UIButton un pulsante personalizzato e applica uno sfondo UII su di esso. Non metterà in evidenza o cambia quando viene premuto

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
+0

ottima risposta !!! – Asmita

12

Si può semplicemente impostare adjustImageWhenHighlighted No.

button.adjustsImageWhenHighlighted = NO; 
+0

Ottima risposta! Altri 2 caratteri – EralpB

+0

Ottima risposta, sono stato a guardare da due giorni per questo – Asmita

6

Bro, ho provato diversi modi come te. Ma alla fine hanno trovato la mia ricetta:

Non so come funziona con un pulsante personalizzato con UIImage su di esso ma per un semplice UIButton con il testo di uno stato heighlighted Si deve semplicemente impostare le stesse impostazioni hai lo stato predefinito.

E per evidenziato stato per proprietà immagine in IB impostare uno spazio. Potresti scoprire che a volte il pulsante potrebbe avere uno strano piccolo offset quando fai clic su di esso. In tal caso, rimuovere il testo da textField per lo stato evidenziato. Risolverà questo problema.

enter image description here

Poi sul vostro evento click vedrete non lampeggia affatto.

+0

Questa è una soluzione hacker. –

+1

Questa è una soluzione di hacking che funziona su Xcode 6.2 beta 5 in swift. Niente non hackish "normale" ha funzionato. Hai appena salvato il mio giorno e notte. Gj –

+0

Impostando la stessa immagine dello stato "Predefinito", ha funzionato per me. – Resty

0

Per coloro che utilizzano un'immagine personalizzata PNG con il colore della tinta accesa, è possibile evitare l'oscuramento (ad esempio, dal bianco al grigio) con questo codice:

clearButton.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 
Problemi correlati