🍎 iOS/DevNote
[UIKit] UITableView에 Cell 내부 UIButton이 동작하지 않는 이유( = ContentView)
@Eddy
2023. 7. 28. 17:29
728x90
contentView를 보니 예전에 내부 Button이 동작하지 않는 이유를 찾느라 고생했던 기억이 나서 정리했다.
Notion에 정리한 내용을 옮겨왔다.
발생가능한 이슈
- UITableViewCell 내부에 배치한 UIButton에 대해 Delegate패턴, Closure패턴을 활용해도 동작하지 않는 상황
요약설명
- UITableViewCell 위에 ContentView가 있다.
- Cell을 커스텀하기 위해선 ContentView 위에 다른 view들을 배치해야 한다.
- 그렇지 않으면 우리가 보는 것과 달리 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를 클릭하고 있는 셈이다.
참고자료
반응형