Development Tip

resignFirstResponder 대 키보드 해제를위한 endEditing

yourdevel 2020. 12. 11. 20:20
반응형

resignFirstResponder 대 키보드 해제를위한 endEditing


스위프트, 두 [someTextField].resignFirstResponder()self.view.endEditing(true)사용자의 관점과 그것을 사용 된 어떤 텍스트 필드 드 - 초점에서 키보드를 숨기고 - 동일한 작업을 수행. 전자는 특정 필드에 한정되는 반면 후자는 전체 뷰를 포함하지만 특정 텍스트 필드를 대상으로하는 것 외에는 언제 하나가 다른 필드보다 선호 / 권장된다는 것을 이해합니다.


someTextField.resignFirstResponder()

resignFirstResponder()첫 번째 응답자 인 텍스트 필드를 정확히 알고 첫 번째 응답자 상태를 사임하려는 경우 언제든지 사용하는 것이 좋습니다. 이것은 대안보다 약간 더 효율적일 수 있지만, 사용자 지정 컨트롤을 만드는 것과 같은 작업을 수행하는 경우이 방법이 충분히 이해 될 수 있습니다. 텍스트 필드가 있고 "다음"버튼을 누르면 키보드를 제거하고 날짜 선택기를 표시 할 수 있습니다. 여기, 나는 확실히 사용할 것입니다resignFirstResponder()

self.view.endEditing(true)

나는 일반적으로 어떤 이유로 든 현재 진행중인 상황에 관계없이 키보드를 완전히 지워야하는 시나리오를 위해 이것을 예약합니다. 아마도 슬라이드 오버 메뉴가 있습니까? 이 슬라이드가 나오기 직전에 무슨 일이 있어도 키보드가 사라져야하므로 모든 것이 첫 번째 응답자 상태에서 사임 하도록 할 입니다. endEditing()하위보기의 전체 계층 구조를 살펴보고 첫 번째 응답자가 자신의 상태를 사임하는지 확인하는 것이 중요 합니다. 이렇게하면 resignFirstResponder()첫 번째 응답자에 대한 구체적인 참조가 이미있는 경우 호출하는 것보다 효율성이 떨어지지 만 그렇지 않은 경우 해당 뷰를 찾아서 사임하는 것보다 쉽습니다.


그런 엄격한 규칙은 없습니다.

resignFirstResponder현재 첫 번째 응답자 상태를 유지하는 텍스트 필드에 대한 참조가있을 때 사용 합니다. 참조가 없거나 확실하지 않은 endEditing경우 트릭을 수행합니다.

그러나 endEditing우리가 가끔으로 설정하는 부울 매개 변수가 있다는 점에 유의해야합니다 true. 이 매개 변수를 호출 true된 뷰로 설정하면 델리게이트 메서드 에서 값을 endEditing반환 했는지 여부에 관계없이 모든 자식 텍스트 필드가 첫 번째 응답자 상태를 사임하게 됩니다. 반대로 with 호출 프로토콜 메서드 의 반환 값을 고려하여 텍스트 필드를 사임하도록 요청 (강제하지 않음)합니다 .falsetextFieldShouldEndEditingendEditingfalsetextFieldShouldEndEditing

참고 URL : https://stackoverflow.com/questions/29882775/resignfirstresponder-vs-endediting-for-keyboard-dismissal

반응형