## 1 아래의 영상은 화면을 특정 방향으로 잡아 끌었을 때 이벤트를 감지하여 어느 방향으로 잡아끌고 있는지 감지하여 화면에 표기해주는 기능을 구현한 것입니다. 구현 방법에는 크게 아래 두 가지 방법을 사용할 수 있습니다. 두 가지 방법 중 한 가지 방법을 골라 구현해보세요. (마우스 클릭 효과 동그라미는 구현하지 않습니다) Gesture Recognizer **UIView’s Touch Event Handling** ``` swift import UIKit class ViewController: UIViewController { @IBOutlet var label: UILabel! var previousTouchedLocation: CGFloat = 0 override func viewDidLoad() { super.viewDidLoad() } override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { if let currentTouch = touches.first { let touchLocation = currentTouch.location(in: self.view) print(touchLocation.x) if touchLocation.x < previousTouchedLocation { label.text = "왼쪽" } else if touchLocation.x > previousTouchedLocation { label.text = "오른쪽" } else { return } previousTouchedLocation = touchLocation.x } } } ``` ## 2 아래의 영상은 화면을 특정 방향으로 잡아 끌었을 때 이벤트를 감지하여 어느 방향으로 잡아끌고 있는지, 현재 사용자의 터치가 위치한 위치는 전체 뷰의 어디인지 감지하여 화면에 표기해주는 기능을 구현한 것입니다. 1에서 사용하지 않은 방식으로 구현해보세요. **Gesture Recognizer** ```swift import UIKit class ViewController: UIViewController { @IBOutlet var panGestureRecognizer: UIPanGestureRecognizer! @IBOutlet weak var recognizerLocationLabel: UILabel! @IBOutlet weak var recognizerDirectionLabel: UILabel! var previousLocation: CGFloat = 0 override func viewDidLoad() { super.viewDidLoad() recognizerDirectionLabel.text = "-" recognizerLocationLabel.text = "-" } @IBAction func pullView(_ sender: UIPanGestureRecognizer) { let location = panGestureRecognizer.location(in: self.view) let x = Int(location.x) let y = Int(location.y) if location.x < previousLocation { recognizerDirectionLabel.text = "왼쪽" } else if location.x > previousLocation { recognizerDirectionLabel.text = "오른쪽" } else { return } previousLocation = location.x recognizerLocationLabel.text = "x: \(x), y: \(y)" } } ``` ## 3 Questions Q1 : Responder Chain이란 무엇입니까? - 리스폰더 오브젝트들이 동적으로 구성된 이벤트 전달 체인 Q2 : Responder Chain과 Gesture Recognizer는 이벤트 제어에서 상호간 상관관계일까요? 별개관계일까요? 그렇게 생각한 이유는 무엇인가요? Q3 : UIResponder 클래스의 역할은 무엇인가요? 클래스의 설명 An abstract interface for responding to and handling events.이 무엇을 뜻하는지 설명해주세요.