1

내 루트보기 컨트롤러는 UISplitViewController이고 preferredDisplayModeUISplitViewControllerDisplayModeAllVisible입니다. 상세 뷰 컨트롤러에서 나는 UISearchController를 가지고,하지만 난 검색 창을 첨부 할 UITableView이없는, 그래서보기 내부 UIView을 배치하고 그것으로 검색 창을 추가UISplitViewController 모드가 모두 표시되면 UISearchController 검색 막대가 잘못 배치됩니다.

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
_searchController.hidesNavigationBarDuringPresentation = NO; 

// This is the view to contain search bar 
_searchView.backgroundColor = [UIColor greenColor]; 
[_searchView addSubview:_searchController.searchBar]; 

self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; 

UPDATE : 이 경우 UIView에 포함 된 경우뿐만 아니라 tableView.tableHeaderView으로 설정된 UISearchBar이 발생했습니다.

이 처음에 (나는 이미지의 높이립니다)처럼 보이는 것입니다 :

enter image description here

을하지만 검색 컨트롤러가 활성화 될 때, 검색 창 프레임의 origin.x 오른쪽으로 잘못되고, 정확히 마스터 뷰 컨트롤러의 폭과 같다 :

enter image description here

분할 뷰 컨트롤러가 UISplitViewControllerDisplayModePrimaryHidden 모드에

는 일어나지 않을 것입니다, 검색 창은 완전히 정상 표시됩니다

enter image description here

그래서 UISplitViewController의 버그이다?

- (void)didPresentSearchController:(UISearchController *)searchController { 
    searchController.searchBar.superview.clipsToBounds = NO; 

    if (self.splitViewController.displayMode == UISplitViewControllerDisplayModeAllVisible) { 
     searchController.searchBar.frame = ({ 
      CGRect frame = searchController.searchBar.frame; 
      frame.origin.x -= self.splitViewController.primaryColumnWidth; 
      frame; 
     }); 
    } 
} 
+0

당신이 다른 해결책을 발견하는 방법? iOS 10.3에서 같은 버그가 발생합니다. – CryingHippo

답변

1

이 나에게 문제의 톤을 제공했다 : 현재 나는이 추한 방법을, 검색 표시 줄의 origin.x 다시 설정 수정, 그것은 좀 glitchy입니다. 내 앱은 SplitView에서 검색 막대가 잘못 배치되어 iPads를 제외한 모든 기기에서 작동했습니다. 마지막으로 솔루션을 게시 한 사람이 나타났습니다. 테이블보기를 viewDidLoad에()의 끝 부분이 추가

self.definesPresentationContext = true 

소스 : searchBar from UISearchController not showing correctly on split view on iPad

관련 문제