2011-11-03 22 views
6

Ben programlı burada UIButton özelleştirme ediyorum:UIButton'a basılmak için doğru UIControlState nedir?

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [button setSelected:YES]; 
     button.frame = CGRectMake(x, y, width, height); 
     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
     [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateSelected]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateDisabled]; 

sorunu I görüntü arka plan görüntüsü basılı ediyorsam kaybolur bunu bırakıyorum kadar ...

cevap

8

Bence sen overkill modunda :). UIControlStateHorlight için UIControlStateNormal ve buttonActive.png için button.png ayarlamayı deneyin. Gerisine gerek yok. Bakalım işe yarayacak.

DÜZENLEME:

Ayrıca

, unutmayın: görüntü dosya adları

Cihazda test ediyorlar harfe duyarlıdır? Görüntü isimleri cihaz için büyük/küçük harfe duyarlıdır, ancak simülatör için değildir. Örneğin, gerçek resim dosyanız buttonactive.png olarak adlandırılmışsa, ancak kodunuzdan buttonActive.png olarak adlandırıyorsanız, simülatörde görünecek, ancak cihazda görünmeyecektir.

Lütfen her iki resim adının davanın asıl dosyanın adıyla eşleştiğinden emin olun.

DÜZENLEME # 2:

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setSelected:YES]; 
    button.frame = CGRectMake(x, y, width, height); 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
    [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
    [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
+1

O görüntü dosyası adları üzerinde harf duyarlıdır ekleyebiliriz yapmak Aygıt, ancak Simülatörde DEĞİL. Bu bana kafamı birkaç kez kaşımdı :) – Keller

+0

@Sid: ** Resim adlarının büyük/küçük harfe duyarlı olduğunu biliyorum **. Ben iPhone simülatörü üzerinde test ediyorum ama aynı tepki vermeli ... –

+0

@Keller: :) ... – Sid

3

Şekil dışarı bu kodu deneyin, bu şekilde çalışır:

[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:UIControlStateSelected]; 
[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:(UIControlStateHighlighted|UIControlStateSelected)]; 
-2

biz

IDE

bir düğme eklemek iken örnek:

.h file 
-(IBAction)BtnAdd:(id)sender 

.m dosyada o

-(IBAction)BtnAdd:(id)sender 
{ 
} 

etkinleştirmek veya devre dışı bırakamazsınız bir yöntem olmasıdır. etkinleştirmek veya devre dışı bırakmak istiyorsanız -(IBOutlet)BtnAdd .h dosyaya IBOutlet eklemek Ve belirli bir düğmeye bağlayın olarak

böylece düğme ardından BtnAdd.enabled=NO çalışacak