Bir UIButton'un vurgu kontrol durumunu nasıl devre dışı bırakabilirim?


147

Seçildiğinde dokunduğunda durumu değiştirmemesi gereken bir UIButtonum var. Varsayılan davranış, dokunulduğunda UIControlStateHighlighted içinde olması ve bu beni kızdırıyor.

Öneriler?

Yanıtlar:


313

Düğmeniz buttonTypeÖzel olarak ayarlanmış olmalıdır .

IB'de "Görüntüyü vurgula ayarları" nın işaretini kaldırabilirsiniz.

Programlı olarak kullanabilirsiniz theButton.adjustsImageWhenHighlighted = NO;

"Devre dışı" durumu için de benzer seçenekler mevcuttur.


1
Bunun programlı versiyonunun ne olacağını biliyor musunuz? Şu anda devre dışı bırakarak ve seçildiği gibi giydirerek hackishly çalışmasını sağladım.
kbanman

99
uibutton.adjustsImageWhenHighlighted = HAYIR;
Haydn

43
Ayrıca düğme türünün ÖZEL olarak ayarlandığından emin olun. (Mosib Asad'ın başka bir cevapta belirttiği gibi)
Vlad Lego

Harika!!! kaçırdığım sadece küçük ve bariz bir değişiklik !!! UIButton sınıf türünü MyCustomClass olarak ayarlamıştım, ancak bunu değiştirmek için forghet. Bu yüzden seçili olmayan düğme vurgulanan efekti veriyordu. Tekrar teşekkürler.
Vinod Supnekar

38

IB'de "vurguyu ayarlar" ın işaretini kaldırmanın yukarıdaki cevabına ek olarak, düğme türünün ÖZEL olarak ayarlandığından emin olun.


2
Eksik parça buydu: CUSTOM düğme tipi. Thanx!
JOM

1
Sistem UIButton'u olarak tutmak istersem ne olur? Vurgulama ayar görüntüsünü kaldıramıyor muyum?
Amjad Husseini

36

Bu sizin için çalışacaktır:

[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

3. sıra buradaki hiledir ...

Bu, resim / arka plan ayarlamak için aynı şekilde çalışır


1
Bu benim için mükemmel. adjustsImageWhenHighlightedMülkü UIButtonsadece arka plan resmi etkileyecek gibi görünüyor.
Michael Thiel

'Devre dışı durumuna' bir görüntü atamaya karar verirseniz, setBackgroundImage'ı çağırmamanız gerektiğini unutmayın. Bunun yerine aşağıdakileri yapmalısınız [button setImage: image forState: UIControlStateDisabled]; Ayrıca, bu iş parçacığında belirtildiği gibi, adjustsImageWhenHighlighted UIButton özelliğinin yalnızca arka plan resmini etkilediğini unutmayın.
HamasN


23
button.adjustsImageWhenDisabled = NO;

, devre dışı bırakılmış bir düğmenin kendi görünümünüz için de aynı derecede yararlıdır.


5

Varsayılandan düğmenin vurgulanan durumuna ne değiştiğine bağlı olarak, bunları ihtiyacınız olana ayarlamak için birkaç yöntem çağırabilirsiniz. Böylece görüntü değişirse

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];

Metin değişirse yapabilirsiniz

[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

diğer benzer fonksiyonlar:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state


setTitleColor, uibutton'un metninde vurgulamayı devre dışı bırakmak için gerekli olan tek şey
atulkhatri

3

Tamam, bu sizin için işe yaradığında kolay bir çözümdür, bir hafta sonra kafamı vurduktan sonra nihayet bana vurgulanmış = NO, TouchUpInside veya TouchDown için IBAction yönteminin 1. satırı için ya da her neyse çalışır. Benim için TouchUpInside iyiydi.

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}

3

Swifty Geliştiricisi için -

yourButton.adjustsImageWhenHighlighted = false

3

Hızlı 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

2

sadece iki şey:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;

2

Benzer bir sorun yaşadım ve "işaretini kaldırmanın" arayüz oluşturucudaki Grafik İçeriği Temizlediğini sorunumu çözdüğünü gördüm

resim açıklamasını buraya girin


2

düğmenizi yapın Tür - "Özel" ve İşaretini Kaldır - Vurgulanan Görüntüyü ayarlayın ve işiniz bitti.


-3

UIButton en ayarlamak için önlemek Satır Sonu etmek Klip yerine, standart kullanımını Truncate Orta

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.