UIButton의 강조 표시 제어 상태를 비활성화하는 방법은 무엇입니까?


147

선택하면 터치 할 때 상태를 변경해서는 안되는 UIButton이 있습니다. 기본 동작은 터치하는 동안 UIControlStateHighlighted에있는 것이므로 화를냅니다.

제안?

답변:


313

버튼 buttonType이 사용자 정의 로 설정되어 있어야합니다 .

IB에서는 "강조 이미지 조정"을 선택 취소 할 수 있습니다.

프로그래밍 방식으로 사용할 수 있습니다 theButton.adjustsImageWhenHighlighted = NO;

"비활성화"상태에서도 비슷한 옵션을 사용할 수 있습니다.


1
이것의 프로그래밍 버전이 무엇인지 알 수 있습니까? 지금은 그것을 비활성화하고 선택 된대로 드레싱하여 해킹 적으로 작동했습니다.
kbanman

99
uibutton.adjustsImageWhenHighlighted = NO;
Haydn

43
또한 버튼 유형이 CUSTOM으로 설정되어 있는지 확인하십시오. (Mosib Asad가 다른 답변에서 언급했듯이)
Vlad Lego

큰!!! 내가 놓친 조금 분명한 변화 !!! UIButton 클래스 유형을 MyCustomClass로 설정했지만이 유형을 변경하지 않았습니다. 그래서 그것은 선택되지 않은 버튼 강조 효과를주었습니다. 다시 한번 감사드립니다.
Vinod Supnekar

38

IB에서 "강조 이미지 조정"을 선택 해제하는 위의 응답 외에도 버튼 유형이 CUSTOM으로 설정되어 있는지 확인하십시오.


2
버튼 형식이 CUSTOM입니다. 고맙습니다!
JOM

1
시스템 UIButton으로 유지하려면 어떻게합니까? 하이라이트 조정 이미지를 제거 할 수 없습니까?
Amjad Husseini

36

이것은 당신을 위해 작동합니다 :

[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];

세 번째 줄은 여기 속임수입니다 ...

이것은 이미지 / backgroundImage 설정과 동일하게 작동합니다.


1
이것은 나에게 완벽하게 작동합니다. 의 adjustsImageWhenHighlighted속성은 UIButton배경 이미지에만 영향을주는 것 같습니다.
Michael Thiel

이미지를 '비활성화 된 상태'에 할당하기로 결정한 경우 setBackgroundImage를 호출하지 않습니다. 대신 다음을 수행해야합니다. [button setImage : image forState : UIControlStateDisabled]; 또한이 스레드에서 언급 한 것처럼 adjustsImageWhenHighlighted UIButton 속성은 배경 이미지에만 영향을줍니다.
HamasN


23
button.adjustsImageWhenDisabled = NO;

사용 중지 된 버튼 모양으로도 유용합니다.


5

기본값에서 강조 표시된 버튼 상태로 변경되는 내용에 따라 몇 가지 메소드를 호출하여 필요한 것으로 설정할 수 있습니다. 이미지가 바뀌면

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

텍스트가 바뀌면 할 수있는 일

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

다른 유사한 기능 :

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

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


setTitleColor가있는 UIButton의 텍스트를 비활성화 하이라이트에 필요한 모든 내가있다
atulkhatri

3

OK. 이것이 이것이 당신을 위해 작동한다면 쉬운 해결책입니다. 이것에 대해 머리를 두드리는 일주일 후에 TouchUpInside 또는 TouchDown에 대한 IBAction 메소드의 첫 번째 줄에 대해 highlight = NO를 설정하는 것이 나에게 효과적이었습니다. 나를 위해 TouchUpInside에서 괜찮 았습니다.

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}

3

Swifty Developer의 경우-

yourButton.adjustsImageWhenHighlighted = false

3

스위프트 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

2

단지 두 가지 :

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

2

비슷한 문제가 있는데 인터페이스 빌더에서 그래픽 콘텐츠 지우기를 "선택 취소"하면 문제가 해결 된 것으로 나타났습니다.

여기에 이미지 설명을 입력하십시오


2

버튼 유형- "사용자 정의"및 선택 취소-강조 표시 이미지 조정을 마치면 완료됩니다.


-3

UIButton의 줄 바꿈Clip 으로 설정하지 말고 대신 표준 자르기 중간을 사용하십시오.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.