gpt4 book ai didi

ios - iOS 11 中的 SearchController。无法触摸任何 tableView 单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:21:53 29 4
gpt4 key购买 nike

搜索 Controller 的系统行为:

  • 转到 iPhone 设置
  • 滑动显示搜索栏
  • 点击搜索栏
  • TableView 现在是灰色的,如果我触摸任何地方(不在 searchBar 中),searchBar 将隐藏
  • 我输入任何文本,tableView 现在颜色正常,我可以点击任何搜索到的单元格。

在我的应用程序中,点击任何文本后 tableView 仍然是灰色的。我无法点击任何搜索到的单元格。不同之处还在于,当我搜索时,我会使用 updateSearchResultsForSearchController 更新旧的 tableView(搜索后我没有不同的 tableView),然后再使用 reloadData。

问题是如何在搜索 Controller 中输入任何文本后隐藏此灰色 View 并提供点击单元格的机会?

我创建搜索 Controller 的方式:

UISearchController * search = [[UISearchController alloc] initWithSearchResultsController:nil];
search.searchResultsUpdater = self;
self.navigationItem.searchController = search;
self.navigationItem.hidesSearchBarWhenScrolling = YES;
self.navigationItem.searchController.searchBar.barTintColor = [UIColor blueColor];
self.navigationItem.searchController.searchBar.delegate = self;

以及我如何更新 tableView 单元格:

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {
self.actualSearchController = searchController;
self.filteredData = [self filterContentForSearchText:searchController.searchBar.text];
[self.tableView reloadData];
}

- (NSMutableArray<MySectionContainter *> *)filterContentForSearchText:(NSString *)text {
NSMutableArray<MySectionContainter *> *sections = [NSMutableArray array];

for (MySectionContainter *section in self.tableData) {
NSArray *objects = [sectionInfo.rowObjects filteredArrayUsingPredicate:[self.filterSource predicateForSearching:text]];

if ([objects count] > 0) {
[sections addObject:[[MySectionContainter alloc] initWithTitle:section.title andObjects:objects]];
}
}

return sections;
}

- (NSPredicate *)predicateForSearching:(NSString *)text {
return [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
if ([evaluatedObject isKindOfClass:[MyClass class]]) {
return [((MyClass *)evaluatedObject).title containsString:text];
}


return NO;
}];
}

示例项目代码:https://pastebin.com/m9V2dunB

截图:

enter image description here

系统行为:

enter image description here

测试项目: https://www.sendspace.com/file/2lhedj

最佳答案

我通过将此行添加到 viewDidLoad

来解决您的演示项目中的问题

search.dimsBackgroundDuringPresentation = NO;

只需移除 UISearchController 的昏暗背景,一切都会正常进行。

关于ios - iOS 11 中的 SearchController。无法触摸任何 tableView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47072408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com