블로그

cell의 이벤트 에러 [Swift]

게시 2분

이 글은 뇌피셜을 기반으로 합니다.

cell에게 이벤트 주는 요소를 두 가지정도로 나누면

UIControl의 서브클래스,

UIControl을 상속하지 않는 UIView로 나눌 수 있을 것 같습니다.

나누는 기준에 대해 말씀드리면 UIControl의 서브클래스들은 cell에 넣었을 때 클릭이 잘 되는 설정이 따로 되어있는건지는 모르겠지만,

cell 자체에 넣어도 지금 말하려는 문제가 생기지 않습니다.

문제는 후자인데, cell에 contentView 라는 서브뷰가 있습니다.

그리고 이 서브뷰는 isUserInteractionEnabled가 true로 설정되어있어요.

또한 후자의 뷰에게 이벤트를 주려면

let iv = UIView() let tap = UITapGestureRecognizer(target: , action: #selector()) iv.isUserInteractionEnabled = true iv.addGestureRecognizer(tap)

addGestureRecognizer를 이용해야 하는데, 이 과정에서도 isUserInteractionEnabled를 true로 설정해야해요.

이렇게 넣은 뷰를 cell 자체에 넣으면, 셀을 클릭했을 때 contentView가 반응하고 우리가 넣은 뷰에서는 이벤트가 안생기는것같아요.

때문에 해결법은 저 두가지 정도 되는것같습니다.

contentView의 isUserInteractionEnabled를 false로 설정해서, 우리가 넣은 뷰에서 이벤트를 발생시키거나,

contentView.isUserInteractionEnabled = false

contentView 에 뷰를 넣어버려요

contentView.addSubview(iv)

그리고 후자의 방법이 권장되는듯 합니다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub