View

[iOS] resignFirstResponder()

Logan iOS 2021. 3. 26. 00:12

텍스트필드 사용이 끝나면 키보드를 화면에서 사라지게 하는 방법


resignFirstResponder() : Notifies this object that it has been asked to relinquish its status as first responder in its window.

resignFirstResponder() method는 window에서 first responder 상태를 포기하라고 알려줍니다.

그럼 first responder는 도대체 뭔가 하고 또 검색을 합니다.

 

If this object succeeds in becoming the first responder, subsequent events targeting the first responder are delivered to this object first and UIKit attempts to display the object's input view, if any.

In UIKit this is usually the control that has activated the keyboard and is receiving input.

 

텍스트필드를 탭하면 텍스트필드는 first responder로 지정됩니다.

탭하는 부분을 조금 더 상세하게 나누면, textField delegate에서 내부적으로 testFieldShouldBeginEditing(_:) method를 호출하고 이 method가 return하는 값이 true라면, first responder로 지정됩니다(becomeFirstResponder()).

 

텍스트필드가 first responder가 된다면, UIKit은 텍스트필드의 input View를 화면에 표시하려고 시도합니다.

hackingwithswift에 따르면, input View란 보통 키보드 또는 입력을 받는 뷰라고합니다.

그래서 이 시점에서 키보드가 표시됩니다.

 

그래서 first responder로서의 자격을 포기해버린다면 이 오브젝트의 input view도 화면에서 사라지게 됩니다.

UITextField 등 키보드가 호출되는 컨트롤을 사용 할 때, 편집이 완료된 시점이나 다른 컨트롤의 이벤트가 발생했을 때 등 이 resignFirstResponder() method를 호출해주면 키보드를 적절한 시기에 화면에서 사라지게 할 수 있습니다.

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
     textField.resignFirstResponder()
        
     return true
}

 

Share Link
reply