如何在iOS中模仿UISearchBar的Safari行为

 滒娶伱 发布于 2023-02-06 19:31

我有一个UISearchBartitleView导航栏(它看起来像下面的图片)的,我想使它的工作方式类似于一个在Safari浏览器.

我没有足够的声誉来发布图片,这是链接

第一张照片

在此输入图像描述

第二张照片

在此输入图像描述

我想要实现的目标是:

在正常状态下,导航栏包含2个左右按钮,UISearchBar在该搜索栏内有一个清除按钮(看起来像带有2个加法按钮的第一张图片).

在搜索状态中,view被另一个取代view,当它被解雇时,view返回到原始状态.

适用于iOS 6和7

我知道这可以通过使用来完成,UISearchDisplayController但它不起作用.这是我的代码:

.h:实施TableView's DataSource/Delegate, UISearchDisplayDelegate, UISearchBarDelegate

.M

-(void) viewDidload
{
    //Add left, right buttons
    self.leftButton = [[UIBarButtonItem alloc] init];
    [self.leftButton setStyle:UIBarButtonItemStylePlain];
    [self.leftButton setTitle:@"Button"];
    self.navigationItem.leftBarButtonItem = self.leftButton;

    self.rightButton = [[UIBarButtonItem alloc] init];
    [self.rightButton setStyle:UIBarButtonItemStylePlain];
    [self.rightButton setTitle:@"Button"];

    self.navigationItem.rightBarButtonItem = self.rightButton;
    self.searchBar = [[UISearchBar alloc] initWithFrame:self.navigationController.navigationBar.bounds];
    if (DEVICE_IS_IOS7) {
        self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
    }
    self.navigationItem.titleView = self.searchBar;
    self.searchBar.delegate = self;
    //----------------

    self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
    self.searchController.delegate = self;
    self.searchController.searchResultsDataSource = self;
    self.searchController.searchResultsDelegate = self;
}

    /*
    table implementation
    */

在IOS 7,viewUISearchDisplayController(灰色的)并不包括主视图和resultTable没有重新加载数据,即使它能够过滤搜索字符串.(我不得不用KVO来显示它)

在iOS 6中,灰色的东西覆盖了所有的屏幕和键盘没有显示(它立即消失).

有人可以帮忙吗?谢谢.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有