UISearchBar 在 iOS 7.1 上添加到 UITableViewCell 时会更改其超级视图
Posted
技术标签:
【中文标题】UISearchBar 在 iOS 7.1 上添加到 UITableViewCell 时会更改其超级视图【英文标题】:UISearchBar changes its superview when it is added to UITableViewCell on iOS 7.1 【发布时间】:2014-04-28 15:51:23 【问题描述】:在我的项目中,我需要一个 UISearchBar
来滚动 UITableView
。所以我把它放在UITableViewCell
这样的地方:
searchBar = [[SearchBar alloc] initWithFrame:cell.bounds];
searchBar.delegate = self;
searchBar.placeholder = NSLocalizedString(@"Search friends", "");
searchBar.layer.borderWidth = 1.f;
searchBar.layer.borderColor = [UIColor whiteColor].CGColor;
sdc = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:nil];
sdc.delegate = self;
[cell addSubview:searchBar];
它在 ios 6 上运行良好。但在 iOS 7 上,当它刚刚获得焦点时,它会切换到另一个超级视图(并从屏幕上消失)。起初我认为我的项目有问题会导致这种行为,但后来我创建了一个简单的测试项目并验证了这一点 - 事实上,这是一个规则,在 iOS 7.1 上 UISearchBar
添加到 UITableViewCell
移动到另一个超级视图和成为第一响应者后立即从屏幕上消失。
我已经覆盖了搜索栏上的willMoveToSuperview:
方法,我看到它从UITableViewCellScrollView
移动到一个视图,哪个类是UIView
,其父视图的类是UISearchDisplayControllerContainerView
。
经过几个小时的搜索和实验,我无法弄清楚导致这种行为的原因以及如何逃避它。我所知道的是,它恰好发生在对这两个 UISearchDisplayDelegate
方法的调用之间:searchDisplayControllerWillBeginSearch:
和 searchDisplayControllerDidBeginSearch:
。
有人遇到过这种情况吗?任何想法如何解决它?
【问题讨论】:
搜索栏不使用单元格,而是将搜索栏设为表格视图的headerView
。
@rmaddy 谢谢你的建议,我会试试的
SearchBar disappears from headerview in iOS 7 的可能重复项
【参考方案1】:
您确定需要这种奇怪的方式将UISearchBar
添加到UITableViewCell
来滚动它吗?我只是像这样使用 smthng:
UISearchBar *mainSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
mainSearchBar.delegate = self;
UISearchDisplayController *searchCon = [[UISearchDisplayController alloc] initWithSearchBar:mainSearchBar contentsController:self ];
searchCon.delegate = self;
searchCon.searchResultsDataSource = self;
searchCon.searchResultsDelegate = self;
mainTableView.tableHeaderView = mainSearchBar;
【讨论】:
谢谢。我明白了。这很明显,我会试一试 @AndreyChernukha 很高兴为您提供帮助! Слава Украине ;) Героям Слава:) Спасибо за поддержку все равно та же херня, хоть и сделал tableHeaderView。 все равно пропадает以上是关于UISearchBar 在 iOS 7.1 上添加到 UITableViewCell 时会更改其超级视图的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS7 中使用 UISearchBar 将子视图添加到 tableHeaderView 行为不端
如何在 iOS 10 的目标 c 中使用 uisearchbar?
iOS Scope Bar 添加到 UISearchBar 下后不出现
UITextField TapGesture 在 iOS 7.1 上没有响应
将 UISearchBar 添加到嵌入到 NavigationController IOS6 中的 UICollectionviewController