首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS 11搜索控制器跳到屏幕顶部

iOS 11搜索控制器跳到屏幕顶部
EN

Stack Overflow用户
提问于 2017-09-14 22:27:00
回答 1查看 2K关注 0票数 7

我的表格是固定宽度的,在iOS 10.x中,搜索栏(在tableviewheader中)在键入时保持相同的大小。然而,在iOS 11中,它会跳到屏幕顶部,并在总宽度上展开。尝试了所有选项;

代码语言:javascript
运行
复制
self.definesPresentationContext  = YES; 
tableHeaderView.clipsToBounds = YES; 
etc 

但是似乎什么都没有改变..它仍然会跳到最上面的全宽。

还有其他选择吗?

带iOS 11的Xcode9 GM (带iOS 10.x的Xcode9 GM,一切都很好)

EN

回答 1

Stack Overflow用户

发布于 2017-09-22 01:04:17

首先,您需要添加UISearchControllerDelegate

然后设置你的代理

代码语言:javascript
运行
复制
self.searchController.delegate=self;

放置一个包含searchController的新视图

代码语言:javascript
运行
复制
-(void) viewDidLoad{
    UIView *searchContainerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.searchTable.frame.size.width, 30)];
    searchContainerView.layer.masksToBounds=YES;
    searchContainerView.clipsToBounds=YES;
    self.tableView.tableHeaderView=searchContainerView;
    self.searchController.searchBar.layer.masksToBounds=YES;
    self.searchController.searchBar.clipsToBounds=YES;
    [searchContainerView addSubview:self.searchController.searchBar];
    [self.searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)];//Make sure that your header view and searchcontroller size is same
}

然后添加这些委托方法

代码语言:javascript
运行
复制
- (void)didPresentSearchController:(UISearchController *)searchController{
    [searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)];
}
- (void)didDismissSearchController:(UISearchController *)searchController{
    [searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)];
}

这对我很管用,我希望你能让它管用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46221717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档