본문 바로가기
🍎 iOS/DevNote

[UIKit] UITableView에 Cell 내부 UIButton이 동작하지 않는 이유( = ContentView)

by @Eddy 2023. 7. 28.
728x90

contentView를 보니 예전에 내부 Button이 동작하지 않는 이유를 찾느라 고생했던 기억이 나서 정리했다.

Notion에 정리한 내용을 옮겨왔다.

 

발생가능한 이슈

  • UITableViewCell 내부에 배치한 UIButton에 대해 Delegate패턴, Closure패턴을 활용해도 동작하지 않는 상황

 

요약설명

  1. UITableViewCell 위에 ContentView가 있다.
  2. Cell을 커스텀하기 위해선 ContentView 위에 다른 view들을 배치해야 한다.
  3. 그렇지 않으면 우리가 보는 것과 달리 ContentView를 클릭하게 되며, 다양한 문제를 겪을 수 있다.

contentView의 위치

설명

애플 공식문서에서는 다음과 같이 설명한다.

  • contentView는 cell 객체의 content view…라는 재귀같은 설명을 하고 있다.
  • UITableViewCell 객체의 content view는 컨텐츠에 대한 cell을 보여주는 기본 superview이다.
  • 만약 cell을 커스텀하기 위해 cell 내부에 추가적인 view를 넣고 싶으면, view를 content view에 추가해서 cell이 editing mode로 전환되거나 벗어날 때 적절한 위치에 배치되도록 해야 한다
// TableViewCell 내부 layout을 잡을 때, 이와 같이 해야 한다.
contentView.addSubView(UIView)

 

만약 contentView.addSubView(UIButton) 등의 방식을 사용하지 않는다면 겉으로 보기에는 정상적인 것처럼 보여지나, 실제로는 contentView 아래에 Button이 있는 것으로 인식되어 Button을 클릭할 수 없게 된다.

즉, 우리는 Button을 클릭하는 줄 알고 있지만, ContentView를 클릭하고 있는 셈이다.

 

참고자료

반응형

댓글