我正在使用带有UITableView的UISearchController,并在我的基本视图控制器上使用相同的表视图来显示搜索结果(没有将单独的搜索结果控制器指定为searchController = UISearchController(searchResultsController: nil)
)。
然而,尽管将searchResultsController设置为nil,但当搜索处于活动状态时,我的视图控制器上仍会显示空的透明_UISearchControllerView
。
有没有办法防止这种情况,并将我的视图控制器保留在搜索控件层次结构的顶部?
感谢。
答案 0 :(得分:1)
您可以通过将搜索控制器的dimsBackgroundDuringPresentation
属性设置为false来删除它
searchController.dimsBackgroundDuringPresentation = false
答案 1 :(得分:0)
默认情况下,UISearchController
会使显示的视图变暗。如果您使用searchResultsController
的其他视图控制器,这将非常有用。在您的代码中,您已设置当前视图以显示结果,因此您不希望将视图调暗。
searchController.dimsBackgroundDuringPresentation = false
答案 2 :(得分:0)
从iOS 13开始,UISearchController#dimsBackgroundDuringPresentation
已过时。
防止模糊包含的视图控制器的正确方法是改用obscuresBackgroundDuringPresentation
:
searchController.dimsBackgroundDuringPresentation = false
当此属性的值为
true
时,一旦用户与搜索栏进行交互,搜索控制器就会模糊包含您可搜索内容的视图控制器。当此属性为false
时,搜索控制器不会模糊原始视图控制器。此属性仅控制原始视图控制器是否最初被遮盖。当用户在搜索栏中输入文本时,搜索控制器会立即显示带有结果的搜索结果控制器。如果使用相同的视图控制器来显示可搜索的内容和搜索结果,建议将此属性设置为
false
。此属性的默认值为true
。
答案 3 :(得分:-1)
大家好,请试试这个。
-(void) searchBar: (UISearchBar *) searchBar textDidChange:(NSString *) searchText{
NSMutableArray *sortedData = [[NSMutableArray alloc] init];
if ([searchText isEqualToString:@""]) {
_localArray = _mainArray; // you must take a local array
}
else{
//show your sorted data
}
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
searchBar.text = nil;
[searchBar resignFirstResponder];
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[searchBar resignFirstResponder];
[self.view endEditing:YES];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
[searchBar resignFirstResponder];
[self.view endEditing:YES];
}