【问题标题】:UISearchBar changes its superview when it is added to UITableViewCell on iOS 7.1UISearchBar 在 iOS 7.1 上添加到 UITableViewCell 时会更改其超级视图
【发布时间】: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:

有人遇到过这种情况吗?任何想法如何解决它?

【问题讨论】:

标签: ios objective-c uikit uisearchbar uisearchdisplaycontroller


【解决方案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。 все равно пропадает
猜你喜欢
  • 2014-04-16
  • 1970-01-01
  • 2013-09-28
  • 2023-03-20
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多