【问题标题】:UISearchController search bar text disappears when losing focusUISearchController 搜索栏文本在失去焦点时消失
【发布时间】:2023-03-09 02:05:01
【问题描述】:

我在 UITableView 的标题中使用 UISearchController 的 UISearchBar。我的搜索工作正常,当我在搜索栏的字段中输入一些文本时,会调用所有相关方法,并且表格视图会按预期显示正确的搜索结果。

当我想点击其中一个结果来做某事时,问题就来了。一旦我点击其中一个表格视图单元格,搜索栏中的字段就会变为空。由于搜索文本现在为空,因此更新了搜索结果,并且表格视图重新加载为零结果。所以点击表格单元格什么都不做,因为表格单元格不再存在。

我可以通过更新我的updateSearchResultsForSearchController: 方法以在搜索字符串为空时不更新搜索结果来解决大部分问题。这很好用。但无论如何,我仍然希望搜索文本保留在搜索字段中,这是我问题的症结所在……

为什么我的搜索文本从搜索字段中消失了,当我点击其他地方时,如何防止搜索字段变为空?

我是这样设置搜索栏和搜索控制器的:

- (void)viewDidLoad {
    [super viewDidLoad];

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

编辑:我注意到表格视图单元格在搜索栏具有焦点时变暗。所以我认为搜索控制器正在捕获所有触摸,并且可能将它们作为“取消”操作处理。如果是这样,我该如何阻止它以这种方式取消?

【问题讨论】:

  • 看看developer.apple.com/reference/uikit/uisearchcontroller/… >"如果你使用同一个视图控制器来显示可搜索的内容和搜索结果,建议你设置这个属性为false。这个属性的默认值是真的。”
  • 是的,你是对的——这解决了我的问题。大约在您发布的同一时间,我自己发现了它。我觉得有点傻。无论如何,我现在已经将其发布为答案,以防以后对其他人有所帮助。

标签: ios objective-c uisearchcontroller


【解决方案1】:

想通了。我需要补充:

searcher.obscuresBackgroundDuringPresentation = NO;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多