iOS/SwiftUI

SwiftUI Button의 Background가 클릭되지 않는 경우

crazydeer 2023. 7. 31. 09:20
반응형

예를 들어 위와 같은 화면에 버튼이 있다고 생각해보자.

 

기본적으로 "선택하기" 부분만 클릭이 되고

나머지 백그라운드 부분이 클릭되지 않는다.

 

이 경우에 아래와 같이 하면 백그라운드 영역도 클릭이 가능하게 된다.

struct ChooseButtonView: View {
  var body: some View {
    Button(action: {
      print("Tapped the Button!")
    }, label: {
      Text("선택하기")
        .frame(maxWidth: .infinity)
        .padding()
        .background(Color.accentColor)
        .foregroundColor(.white)
        .cornerRadius(12)
        .padding(.horizontal, 20)
    })
  }
}

 

Button을 타이핑하면 내장되어 있는 코드 스니펫?이 나오는데

이중에 위 이미지처럼 action:label: 이거로 하면 된다.

 

Label 자체를 키워버린 것이다.

왜인지는 모르겠지만 SwiftUI에서는 Label의 영역만 Tap이 가능하게 만들어 놓은 것 같다.

 

아래처럼 해도 똑같이 된다.

Button {
  print("Tapped the Button!")
} label: {
  Text("선택하기")
    .frame(maxWidth: .infinity)
    .padding()
    .background(Color.accentColor)
    .foregroundColor(.white)
    .cornerRadius(12)
    .padding(.horizontal, 20)
}
반응형