리스폰더는 Event Raw Data를 받을 수 있음
리스폰더가 이벤트를 받았다면?
이벤트 -> 리스폰더 -> 직접 처리한다 or 다음 순서의 리스폰더로 전달
즉 주어진 리스폰더가 일을 직접 처리하지 못한다면, 다음 순서의 리스폰더로 전달하고, 그 리스폰더가 또 직접 처리하지 못한다면 다음으로 계속 넘어가는 형식을 Responder Chain이라고 하는 것.
만약 끝까지 처리되지 못한다면? 앱이 해당 메세지를 버림!
이때 맨 처음으로 이벤트들을 받는 리스폰더를 first responder라고 하는데, 우리가 이 first responder을 직접 지정해주기 위해선 자신이 first responder가 될 수 있다고 나타내주어야 함.
becomeFirstResponder()
위 메서드를 사용하면 해당 윈도우에서 객체를 first responder로 만들 것을 요청하며, 객체가 first responder이면 true를, 아니면 false를 리턴하는 형태.
but 반드시 호출한다고 first responder가 되는 것은 아님 -> Why? UIKit에게 요청하지만, first responder가 해제가 될 수 없는 상황일 수도 있는 경우엔 불가능!
그러면 first responder을 포기하기 위한 메서드도 존재하는데, 이 메서드가 바로
resignFirstResponder()
해당 객체에게 지금 윈도우의 first responder로서의 상태를 포기하라고 요청하는 메서드.
이를 사용하면 first responder 상태를 물려주면서 true를 리턴하게 된다.
참고 : UIView는 UIResponder을 상속받는 형태이기 때문에, 우리가 자주 사용하는 UITextField에서 리스폰더 체인 메서드들을 사용할 수 있는 것!