Articoli con Tag ‘buttonWithType’

Apple iPhone: creare un custom toggle button

Gli stati UIControlStateSelected o UIControlStateHighlighted non funzionano quando un UIButton è impostato in modalità UIButtonTypeCustom! O meglio, non funzionano come dovrebbero (perchè riservati agli altri tipi di bottone), ad esempio per creare un bottone a due stati: toggle appunto. Se abbiamo creato due immagini (stato1.png e stato2.png) per il nostro bottone, possiamo procedere in questo modo:

1
2
3
// Nell'header file creiamo una variabile globale che usaremo per
// controllare il toggle state
BOOL toggleFlag;

Ora creiamo il nostro bottone:

1
2
3
4
5
6
7
8
9
// Creaiamo un bottone e lo poniamo inizialmente nello stato "stato1.png"
// Modificate initWithFrame:(CGRect){100,100,50,50} con la posizione e
// dimensioni della vostra immmagine
toggleFlag = YES;
UIButton *toggleButton = [[UIButton buttonWithType:UIButtonTypeCustom] initWithFrame:(CGRect){100,100,50,50}];
[toggleButton setTitle:@"" forState:UIControlStateNormal];
[toggleButton setBackgroundImage:[UIImage imageNamed:@"stato1.png"] forState:UIControlStateNormal];
[toggleButton addTarget:self action:@selector(onToggle:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:toggleButton];

Quando si clicca sul bottone verrà inviato un messaggio gestito da onToggle:

1
2
3
4
5
6
7
- (void)onToggle:(id)sender {
// Recupero puntatore al UIButton
UIButton *buttonClicked = (UIButton *)sender;
// Eseguo il toogle
toggleFlag = !toggleFlag;
[buttonClicked setBackgroundImage:[UIImage imageNamed:(toggleFlag) ? @"stato1.png" : @"stato2.png"] forState:UIControlStateNormal];
}

Continua...

Apple iPhone SDK 3.0: risolto baco su UIButton buttonWithType

Come indicato nel post Apple iPhone SDK 3.0: prime incompatibilità le SDK 3.0 di Apple mostrano comportamenti differenti rispetto alla release 2.2.1. Il supporto di assistenza per gli sviluppatori mi ha fornito la risposta, e quindi la soluzione al problema. La risposta del supporto tecnico è stata che [UIButton buttonWithType:] già chiama – al suo interno – la initWithFrame. Ne deriva che, sempre secondo il supporto tecnico, scrivendo:

Continua...

Apple iPhone SDK 3.0: prime incompatibilità

Dopo aver installato le SDK 3.0 per Apple iPhone, evidentemente ancora non perfettamente stabili, ho subito riscontrato alcuni problemi, sia nella compilazione del codice sia nell’impostazione generale di XCode. Il più importante – che ho prontamente segnalato con un “case” ad Apple, al centro sviluppatori – riguarda la creazione di bottoni tramite codice. Ecco un estratto del codice non compatibile con le SDK 3.0:

1
2
3
4
UIButton *myButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] initWithFrame:CGRectMake(0, 0, 100, 40)];
[myButton setTitle:@"Bottone" forState:UIControlStateNormal];
// altre impostazioni
[self.view addSubview:myButton];

Compilando questo codice con le SDK 2.2.1 si ottiene un classico bottone con la label “Bottone”. Con le SDK 3.0 il bottone viene creato ma la label scompare. Utilizzando come buttonWithType il tipo UIButtonTypeCustom la situazione sembra migliorare, nel senso che la label viene resa apparentemente in modo corretto. Rimane comunque strano l’improvviso malfunzionamento sul tipo UIButtonTypeRoundedRect. Sono ancora in attesa di una risposta da Apple… appena ho novità; posto!

Continua...


Stop SOPA