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 호출 은 프로토콜 메서드 의 반환 값을 고려하여 텍스트 필드를 사임하도록 요청 (강제하지 않음)합니다 .false
textFieldShouldEndEditing
endEditing
false
textFieldShouldEndEditing
'Development Tip' 카테고리의 다른 글
두 개의 지저분한 감시 작업을 동시에 실행하는 방법 (0) | 2020.12.11 |
---|---|
maven에서 jacoco JVM 인수와 확실한 JVM 인수를 함께 사용할 수 없습니다. (0) | 2020.12.11 |
Emacs에서 창 레이아웃 유지 (0) | 2020.12.11 |
Android에서 메모리 사용량 얻기 (0) | 2020.12.10 |
비디오 파일의 길이를 얻는 방법은 무엇입니까? (0) | 2020.12.10 |