제 코드에서 나는 각각 UITableView
에 약 8 UITextField
을 가지고 있습니다. 또한 UIBarButtonItem
을 선택하면 hideKeyboard
메서드가 호출됩니다.테이블보기에서 텍스트 필드와 함께 endEditing을 사용할 때 크래시가 발생했습니다.
사용자가 텍스트 필드를 선택한 다음 텍스트 필드가 더 이상 표시되지 않도록 키보드를 표시하고 uibarbuttonitem을 누르면 EXC_BAD_ACCESS가 표시되도록 tableview를 스크롤합니다.
텍스트 필드는 프로그래밍 방식으로 cellForRowAtIndexPath
을 통해 각 행에 배치됩니다. hideKeyboard
은 간단히 [self.view endEditing:YES];
입니다.
내 생각 엔 endEditing
이 첫 번째 응답자 인 textField를 검색하고 사임한다고 가정합니다.하지만 첫 번째 응답자가되어 표시되지 않은 방식으로 tableview를 스크롤하면 그 셀 재사용되어야하고 텍스트 필드가 할당 해제 되었어야합니다 ..하지만 endEditing 메소드는 여전히 충돌이 발생했을 때 사임하도록 호출합니다.
마지막 firstResponder에 대한 참조를 얻는 방법에 대해 생각했지만 할당 취소 되었다면 어쨌든 사임 할 수 없었습니다. 어떤 것을 모르기 때문에 becomeFirstResponder를 호출 할 수없고 임의의 텍스트 필드에서 사임 할 수 없습니다. 그 시간에 볼 수 있습니다.
아무도이 충돌의 원인을 알 수 있습니까? 키보드를 올바르게 닫으려면 어떻게해야합니까?