ios - tableHeaderView 中的 UISearchController searchBar 在屏幕外设置动画

标签 ios objective-c uitableview uisearchbar uisearchcontroller

我有一个 UISearchController 和一个 UITableViewController 作为 searchResultsController,这个 searchController 的 UISearchBar 设置为在我的根 ViewController 中显示的当前 tableViewtableHeaderView 中。正如预期的那样,几乎一切都运行良好。但是在 UISearchBar 的动画中(当我点击 searchBar 并且 UINavigationBar 隐藏并且 searchBar 到达顶部时,如在 UISearchDisplayController) 我有一个奇怪的行为。它没有移动到 UINavigationBar (y: 0) 的位置,而是跳出屏幕并启动显示取消按钮的动画。我尝试将我的实例化代码移动到 viewDidLoad 而不是 init,结果是一样的。我认为问题的中心在于 searchResultsController View 的框架,但我不确定(我尝试设置框架,但没有成功)。我所做的一切都是纯代码。

这是代码的相关部分:

- (void) viewDidLoad { 
    [super viewDidLoad];

    // search controller setup
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
    self.searchController.delegate = self;
    self.searchController.searchResultsUpdater = self;
    self.searchController.searchBar.delegate = self;

    [self.searchController.searchBar sizeToFit];
    self.tableView.tableHeaderView = self.searchController.searchBar;

    self.searchController.definesPresentationContext = YES;
}

我为 searchResultsController 设置了延迟加载:

- (UITableViewController *)searchResultsController {
    if (_searchResultsController == nil) {
        _searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
        _searchResultsController.tableView.delegate = self;
        _searchResultsController.tableView.dataSource = self;
    }
    return _searchResultsController;
}

我已经从 apple 下载了示例代码,但他们使用 storyBoards 和 UITableViewCell 的 xib,SearchController 在项目中完美运行。有没有人有同样的问题?我怎样才能解决这个问题?任何解决方案或建议将不胜感激。

感谢关注。

最佳答案

添加

self.extendedLayoutIncludesOpaqueBars = YES;

关于 viewDidLoad 方法

关于ios - tableHeaderView 中的 UISearchController searchBar 在屏幕外设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222671/

相关文章:

iphone - 如何使 UIImageView 变暗

c++ - Box2d。如何查看 body 是否在坐标系中移动?

objective-c - cell.image 已弃用

ios - Xcode Swift Playgrounds - 如何为 ViewController 设置默认大小

iphone - 获取地址簿联系人的组?

ios - 将 UIGestureRecognizer 添加到自定义 drawRect 或 UIBezierPath

ios - UITableView 滚动前单元格大小错误?

ios - Swift 将对象从一个数组正确添加到另一个数组?

ios - [NSConcreteValue浮点值] : unrecognized selector sent to instance

ios - 远程 mp3 文件需要花费大量时间在 swift ios 中播放