Trouble Shooting

[Swift UIKit] Button 터치 피드백이 안보이는 경우

Kim Roks 2025. 5. 2. 18:42

🔊 개요

앱을 만들 때 Button은 필수적이고, 자동으로 터치 피드백을 제공합니다.(눌렸을 때 색깔이 바뀐다던가)

하지만 종종 버튼을 눌렀을 때 아무런 반응이 없는 것처럼 보이는 문제를 겪게 되죠.

그럴 땐 대부분 아래 이유 중 하나입니다.


👇 1. AttributedString에서 색상을 직접 지정한 경우(configuraton 사용 시)

configuration 사용 시 폰트를 지정할 때 AttriibutedString을 사용하게 됩니다.

그때 foregroundColor 또한 지정이 가능하며 이것으로 글자색을 바꿀 수도 있습니다.

 
let attributedTitle = AttributedString(
    "이미지",
    attributes: AttributeContainer([
        .font: UIFont.et_pretendard(style: .medium, size: 18),
        .foregroundColor: UIColor.et_textColor5
    ])
)
configuration.attributedTitle = attributedTitle

 

하지만 이렇게 하면 터치됐을 때 버튼의 상태가. highlighted로 바뀌어도 텍스트 색상은 그대로입니다.

시스템이 자동으로 상태별 색을 조정하지 못해요

✅ 해결 방법

var attributedTitle = AttributedString("이미지")
attributedTitle.font = UIFont....
configuration.attributedTitle = attributedTitle
configuration.baseForegroundColor = UIColor...
  • AttributedStrign이 아닌, configuration의 컬러를 바꿔줌으로 해결

 

👇 2. 버튼 위에 다른 뷰가 덮여 있는 경우 (터치 전달 문제)

가장 흔하지만 간과되는 문제입니다. 버튼은 잘 만들어졌지만, 다른 뷰가 버튼 위에 있어서 터치 이벤트가 가로 차일 수 있습니다.

🛠 체크리스트

  • 버튼 위에 UIView, UILabel, UIImageView 등이 isUserInteractionEnabled = true로 되어 있고, 투명한 경우
  • 오토레이아웃 제약이 잘못돼서 버튼이 실제로는 안 보이는 곳에 있거나, 작게 눌려 있음
  • clipsToBounds, alpha, hidden 속성으로 인해 버튼이 뷰 계층상 보이지만 동작 안 함

✅ 해결 방법

  • Xcode의 Debug View Hierarchy를 열어서 버튼 위에 어떤 뷰가 있는지 시각적으로 확인
  • 덮는 뷰가 있다면 isUserInteractionEnabled = false로 설정
  • 필요시 버튼을 superview의 가장 앞쪽으로 올림:
view.bringSubviewToFront(addLinkButton)

👇 3. 버튼 자체가 지나치게 작거나 레이아웃이 어긋남

버튼 레이아웃이 너무 타이트하면 눌렀을 때 효과도 작게 느껴지거나 아예 반응이 없어 보일 수 있습니다.

또한 레이아웃이 완벽히 잡혀있지 않으면 버튼 피드백이 보이지 않을 수 있습니다.

 

✅ 해결 방법

  •  레이아웃 점검하기!

🧾 정리: 버튼 터치 피드백이 안 보일 때 체크리스트


 

.attributedTitle에서 색상 지정 baseForegroundColor만 사용
배경 피드백 없음 backgroundColorTransformer 설정
다른 뷰가 덮고 있음 Debug View Hierarchy 확인, 덮는 뷰 isUserInteractionEnabled = false
버튼이 너무 작거나 인셋 없음 contentInsets, imagePadding 설정
버튼이 안 보이는 계층 구조에 위치해 있음 bringSubviewToFront(button) 또는 레이아웃 수정

 


✨ 마무리

버튼이 눌리는 동작은 정상적으로 수행되지만, 터치 피드백이 사용자에게 보이지 않는 경우가 있습니다.
이러한 시각적 피드백은 사용자 경험(UX)에 있어 매우 중요한 요소입니다.
버튼을 눌렀을 때 아무런 변화가 없다면, 사용자 입장에서는 "정말 눌린 게 맞나?" 하는 불안감을 느낄 수 있기 때문이죠.

기존에 잘 작동하던 버튼이 갑자기 피드백이 보이지 않게 되었다면, 어딘가 실수가 있었던 것일 가능성이 높습니다.
이럴 때는 단순히 "작동하니까 괜찮다"는 생각보다, 왜 피드백이 사라졌는지 하나씩 체크해 보는 습관을 들이는 것이 좋습니다.
작은 디테일이 전체 사용자 경험의 완성도를 결정짓습니다.