becomeFirstResponder, resignFirstResponder 차이

lnnae·2021년 5월 3일
0

UIKit에서 textField의 키보드를 올리거나 내릴 때 이 함수들을 많이 사용하는데여
두 개의 차이가 궁금해서 정리하려고 합니다

becomeFirstResponder

정의를 살펴보자면, 해당 윈도우에서 이 객체를 first responder로 만들 것을 요청하는 함수입니다. 해당 객체가 첫 번째 응답 responder이면 true, 아니면 false를 리턴합니다.

👻 responder..?

여기서 responder는 이벤트에 대한 응답을 처리하기 위한 추상 인터페이스입니다. UIView, UIViewController, UIApplication 객체들이 responder에 해당한다고 합니다. 이벤트가 발생하면, UIKit은 이를 처리하기위해 우리 앱의 responder에게 이벤트를 보냅니다.

현재 객체를 first responder로 지정하려면 이 메소드를 호출하면 된다고 합니다. 그러면 UITextView나 UITextField에서 키보드를 올리는 액션을 취하기 위해서는 이 함수를 호출하면 되겠죠?

하지만 호출한다고 해서 무조건 first responder가 된다는 것은.. 아닙니다. UIKit에게 현재 first reponder에게 resign을 요청하지만 원하는대로 되지 않을 수 있기 때문이라네요..
이 케이스는 UIKit이 객체의 canBecomeFirstResponder()를 호출하는데, 이 함수는 기본적으로 false를 반환합니다. 만약에 객체가 first responder가 되는데 성공하면, 이 이후 이벤트가 먼저 이 객체로 전달되고 UIKit은 객체의 input view를 보여주려고 시도합니다.

resignFirstResponder

그럼 이 함수는 뭘까요..
해당 객체에게 지금 윈도우의 첫 번째 responder로서의 상태를 포기하라고 요청이 왔음을 알리는 함수입니다. 기본적인 구현으로는 첫 번째 responder 상태를 물려주면서 true를 리턴합니다.

오.. 그럼 resignFirstResponer를 호출하면 키보드가 내려가겠군요

profile
이내임니당 :>

0개의 댓글