ㄴ 파란색 UIView를 탭하면 tap!이 출력되도록 구현했음
별도의 touch event가 없는 UIView에 touch event를 추가하는 과정을 대충 상상해 본다면, 우선 gesture을 인식할 수 있는 인식기를 만들어 view에 추가해야 하고, gesture 인식 시 일어나게 하고 싶은 작업도 만들어야 할 것이다.
한번 자세하게 알아봅시닷
우선, 뷰컨에 UIView outlet을 만들어 주었음! 이름은 blueView
필요한 놈들
✏️ UITapGestureRecognizer
✏️ addGestureRecognizer(_:)
단일 또는 다중 탭을 해석하는 개별 gesture recognizer
UIGestureRecognizer
의 서브 클래스 init(
target: Any?,
action: Selector?
)
✏️ target
: gesture을 인식할 때, action message의 수신자 오브젝트
➡️ 이 경우에 보통은 self를 사용할 것임. 나는 UIView 본인에게 action message를 보낼 것이므로
✏️ action
: receiver가 인식한 gesture을 처리하기 위해 target에서 구현된 방법을 식별하는 selector
이라고 나와 있는데 쉽게 정리하자면, gesture을 인식할 때 호출할 메소ㄷㅡ..ㄹ...ㅗ...
➡️ 원하는 작업을 포함하여 Selector 타입으로 메소드 작성
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapBlueView))
...
@objc func tapBlueView() {
print("tap!")
}
view에 gesture recognizer을 연결함
UIView의 인스턴스 메서드
blueView.addGestureRecognizer(tapGesture)
전체 코드
사용자 이벤트가 무시되고 이벤트 queue서 제거되는지 여부를 결정하는 bool 값
✏️false
ㄴ view에 대한 touch, press, keyboard, focus 이벤트가 무시되고 이벤트 queue에서 삭제됨
✏️ true
ㄴ이벤트가 정상적으로 view에 전달됨
✏️ 기본값은 true
예시의 UIView 같은 경우는 true가 기본으로 설정되어 있지만, UILabel이나 UIImageView 같은 경우는 true로 설정되어 있지 않음. 인스펙터에서 체크해 주거나
xxx.isUserInteractionEnabled = true
를 해 주는 작업이 필요하다 😀