범용 iOS 앱을 개발하는 동안이 이상한 문제가 발생했습니다. 내 애플 리케이션은 오히려 간단 해 보인다. 뿌리에는 UITableViewController
이 있습니다. 첫 번째 탭에는 UISplitViewController
이 포함되어 있습니다. UISplitViewController
의 주인은 UITableViewController
인 UINavigationController
이며 세부 정보는 UITableViewController
인 UINavigationController
입니다.UISplitViewController DetailViewController가 MasterViewController가 검색 모드에있을 때 내용이 틀립니다.
또한 마스터 테이블보기에는 항목을 필터링하는 데 사용하는 tableHeaderView
에 검색 창이 있습니다. 이 모든 작품을 기대하지만 하나의 문제는 UISplitViewController
가 동시에 마스터 및 세부 정보를 보여주는 장치에 나타나는 참조로 (예를 들어, 아이 패드 또는 대형 화면 아이폰 :
문제 : 키보드는 검색 창에서 활성화되면 . 마스터의, 세부의 tableView
는 잘못된 contentInset.bottom
원인이 있습니다은 내가 표시 얼마나 많은 다른 세포에 따라 tableView(_:heightForRowAt:)
에지도 셀 높이를 계산하기 위해 함께 tableView.bounds.height
와 tableView.contentInset.top
및 tableView.contentInset.bottom
를 사용
내가 디버그했는데 일반적으로 .top
삽입 기호는 64이고 .bottom
은 49이며 이는 상태 표시 줄 + 탐색 바 및 탭바의 예상 값입니다. 그러나 키보드가 검색 창에서 활성화되어 있으면 .bottom
인세 트가 104가되어 플러스 키보드 모음의 55 개입니다. 보시다시피, 키보드 도구 모음은 tabbar를 오버레이하고 그냥 위로 이동하지 않으며 tableview가 .bottom
인세 트를 잘못 계산하고 있다고 생각합니다.
질문 : 내가 무엇을해야하므로 tableView.contentInset.bottom
이 TabBar의 오버레이 도구 모음이있는 경우 TabBar의 55가있는 경우, 49에는 TabBar의이없는 경우 0이라고?
키보드 도구 모음을 사용하는 경우지도가 이동하는 방법을 알아보십시오? tableView(_:heightForRowAt:)
의 tableView.contentInset.bottom
104 대신 55
키보드가 활성화되지 않은 경우/검색 창 집중되지의 tableView.contentInset.bottom
는 49