2017-02-03 1 views
1

UITableView의 머리글에서 UISearchController의 UISearchBar를 사용하고 있습니다. 검색 창에서 일부 텍스트를 입력하면 관련된 모든 메소드가 호출되고 테이블보기에 올바른 검색 결과가 예상대로 표시된다는 점에서 검색 기능이 정상적으로 작동합니다.포커스를 잃을 때 UISearchController 검색 막대 텍스트가 사라집니다.

문제는 결과 중 하나를 사용하여 무언가를하고 싶을 때 발생합니다. 표보기 셀 중 하나를 탭하자 마자 검색 막대의 필드가 비게됩니다. 검색 텍스트가 이제 비어 있으므로 검색 결과가 업데이트되고 테이블보기가 다시로드되어 결과가 0입니다. 따라서 표 셀의 탭은 아무 것도하지 않습니다. 표 셀이 더 이상 존재하지 않기 때문입니다.

검색 문자열이 비어있을 때 내 updateSearchResultsForSearchController: 메서드를 업데이트하여 검색 결과를 업데이트하지 않으면이 문제의 대부분을 해결할 수 있습니다. 그리고 이것은 잘 작동합니다. 그러나 어떤 경우에도 검색 텍스트를 검색 필드에 남겨두고 싶습니다. 내 질문의 핵심은 ...

검색 텍스트가 내 검색 텍스트에서 사라지는 이유는 무엇입니까? 내가 다른 곳에서 탭하면 검색 필드가 비어 있지 않습니까?

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    searcher = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    searcher.searchResultsUpdater = self; 
    searcher.delegate = self; 
    searcher.definesPresentationContext = YES; 
    resultsTable.tableHeaderView = searcher.searchBar; 

편집 : 나는 검색 창에 포커스가있는 동안 테이블 뷰 세포가 흐리게되는 것을 알 여기

내가 검색 창 및 검색 컨트롤러를 설정하는 방법입니다. 그래서 검색 컨트롤러가 모든 터치를 캡처하고 아마도 '취소'작업으로 처리한다고 생각합니다. 그렇다면이 방법으로 취소하는 것을 어떻게 중지합니까?

+0

는 "> https://developer.apple.com/reference/uikit/uisearchcontroller/1618656-obscuresbackgroundduringpresenta 한 번 봐 같은 뷰 컨트롤러를 사용하는 경우 검색 내용을 표시 : 내가 추가 할 필요 검색 결과를 제외하고이 속성을 false로 설정하는 것이 좋습니다.이 속성의 기본값은 true입니다. " –

+0

예, 정확합니다 - 문제가 해결되었습니다. 나는 당신이 올린 것과 거의 같은 시간에 나 자신을 발견했다. 나는 어리 석다. 어쨌든, 나중에 답변을 올렸습니다. 나중에 다른 사람에게 도움이되기 때문에. –

답변

1

알아 냈어.

searcher.obscuresBackgroundDuringPresentation = NO; 
관련 문제