Objective-C - 滚动时 UISearchController 结果在 UISearchBar 上重叠
Objective-C - UISearchController results overlap on UISearchBar when scrolling
我的目标如下:拥有一个始终可见的 UISearchBar。当它不活动时,控制器底部有一些内容。当它变为活动状态时,我想在与 UIController 重叠的 UITableView 中显示搜索结果。
我的搜索设置方式如下:
我的 ViewController 顶部有一个固定的 UIView,它是通过 Storyboard 创建的。
在我的 viewDidLoad 方法中,我将 searchController.searchBar 添加到该 UIView,以便 UISearchBar 永久激活。
我将非常有用的以下行用于 hide/display searchResultsController:
searchController.searchResultsController.view.hidden = FALSE;
除了当我显示结果时,如果我向下滚动,结果显示在 UISearchBar 的顶部,所有这一切都完美无缺。
有什么方法可以避免这种情况?我相信这是因为我使用了以下行:
[searchBarView addSubview:self.searchController.searchBar];
其中 searchBarView 是一个空的占位符视图,我在 Storyboard 上创建它并固定在顶部。这是我发现永久显示 searchBar 的唯一方法。请务必注意,我不使用导航控制器,这就是为什么我不将 searchController 添加为导航项的原因。
非常感谢您的帮助!
不要使用半透明导航栏
self.navigationController.navigationBar.translucent = NO;
您使用 UISearchController
的方式完全错误。如果是 searchcontroller,您必须提供 searchcontroller 作为结果 tableview 的 tableHeaderView。在这里,您在其他地方将 searchcontroller 添加到 UIView 和 tableview 中。这显然不行。
你还是可以试试这个方法---
- 使 topView 不透明。(不为该 containerview 提供透明度)
- 使用
UISearchbar
而不是 UISearchcontroller
。
这样,我想你的问题就解决了。
我已经搜索了好几个小时,最终结果是将这一行放在 viewDidLoad 中:
self.extendedLayoutIncludesOpaqueBars = YES;
问题已解决:)
希望对您有用。谢谢
我的目标如下:拥有一个始终可见的 UISearchBar。当它不活动时,控制器底部有一些内容。当它变为活动状态时,我想在与 UIController 重叠的 UITableView 中显示搜索结果。
我的搜索设置方式如下:
我的 ViewController 顶部有一个固定的 UIView,它是通过 Storyboard 创建的。
在我的 viewDidLoad 方法中,我将 searchController.searchBar 添加到该 UIView,以便 UISearchBar 永久激活。
我将非常有用的以下行用于 hide/display searchResultsController:
searchController.searchResultsController.view.hidden = FALSE;
除了当我显示结果时,如果我向下滚动,结果显示在 UISearchBar 的顶部,所有这一切都完美无缺。
有什么方法可以避免这种情况?我相信这是因为我使用了以下行:
[searchBarView addSubview:self.searchController.searchBar];
其中 searchBarView 是一个空的占位符视图,我在 Storyboard 上创建它并固定在顶部。这是我发现永久显示 searchBar 的唯一方法。请务必注意,我不使用导航控制器,这就是为什么我不将 searchController 添加为导航项的原因。
非常感谢您的帮助!
不要使用半透明导航栏
self.navigationController.navigationBar.translucent = NO;
您使用 UISearchController
的方式完全错误。如果是 searchcontroller,您必须提供 searchcontroller 作为结果 tableview 的 tableHeaderView。在这里,您在其他地方将 searchcontroller 添加到 UIView 和 tableview 中。这显然不行。
你还是可以试试这个方法---
- 使 topView 不透明。(不为该 containerview 提供透明度)
- 使用
UISearchbar
而不是UISearchcontroller
。
这样,我想你的问题就解决了。
我已经搜索了好几个小时,最终结果是将这一行放在 viewDidLoad 中:
self.extendedLayoutIncludesOpaqueBars = YES;
问题已解决:)
希望对您有用。谢谢