• UISearchController 很坑


    最近一个项目用到了很多搜索 踩了一大波坑 还要继续踩下去

    直接上代码了

    <UISearchControllerDelegate,UISearchResultsUpdating>
    
    //声明
    @property (nonatomic,retain) UISearchController *searchController;
    
    
    - (void)createUI{
        
        self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
        self.searchController.delegate= self;
        self.searchController.searchResultsUpdater = self;
        self.searchController.searchBar.barTintColor = BHBackColor;
        self.searchController.searchBar.placeholder= @"车牌号";
        self.searchController.searchBar.searchBarStyle =UISearchBarStyleMinimal;
        
        //    //提前在搜索框内加入搜索词
        //    self.searchController.searchBar.text = @"xxxx";
        
        
        self.searchController.searchBar.tintColor = BHNoticeColor;
        //搜索时,背景变暗色
        self.searchController.dimsBackgroundDuringPresentation = NO;
        //搜索时,背景变模糊
        //    self.searchController.obscuresBackgroundDuringPresentation = NO;
        
        //点击搜索的时候,是否隐藏导航栏
        //    self.searchController.hidesNavigationBarDuringPresentation = NO;
        
       self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
        
        self.definesPresentationContext = YES;
        self.searchController.hidesNavigationBarDuringPresentation = NO;
        [self.searchController.searchBar setContentMode:UIViewContentModeLeft];
        
        self.navigationItem.titleView =self.searchController.searchBar;
        UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.rightBarButtonItem = rightBarItem;
         [self.view addSubview:self.searchTableView];
       
    
    }
    
    
    
    
    
    
    
    
    //谓词搜索过滤
    -(void)updateSearchResultsForSearchController:(UISearchController *)searchController {
    
        NSLog(@"搜索");
        
        NSString *searchString = [self.searchController.searchBar text];
    
    //下面处理数据  怎么处理的都可以   这个方法是 searchbar 内容改变一次就调用一次
    
    
    
        
        
    }

     想要在跳转页面的时候键盘直接弹出来

    - (void)viewDidAppear:(BOOL)animated {
        
        [super viewDidAppear:animated];
        
        [self performSelector:@selector(showKeyboard) withObject:nil afterDelay:0];
        
    }
    - (void)showKeyboard {
        
        [self.searchController.searchBar becomeFirstResponder];
        
    }

    如果

    self.searchController.hidesNavigationBarDuringPresentation = YES; //默认是YES

    不要在

    - (void)updateSearchResultsForSearchController:(UISearchController *)searchController{
    
      //不要加  self.edgesForExtendedLayout = UIRectEdgeNone;  
    
    }

    否则会在返回的时候上移 44个像素

    连接涉及到的坑

    iOS双击Home键进入switcher任务管理切屏退出进入闪屏的解决办法

    测试结果 第一种和第二种不可用 如果有加搜索的话取消按钮也会变成透明的 第三种 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(1000, 1000) forBarMetrics:UIBarMetricsDefault]; 

    其他待更新......

    //搜索框

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        if (!_searchBar.isFirstResponder) {
            [self.searchBar becomeFirstResponder];
        }
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        // 回收键盘
        [self.searchBar resignFirstResponder];
       
    }
    

      



    - (void)setBarButtonItem { [self.navigationItem setHidesBackButton:YES]; // 创建搜索框 UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(5, 7, self.view.frame.size.width, 30)]; UIImage *img = [UIImage imageNamed:@"arrow_back_gray"]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(-10, 10, 22, 22); [btn setImage:img forState:UIControlStateNormal]; [btn addTarget:self action:@selector(presentVCFirstBackClick:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *bbiBack = [[UIBarButtonItem alloc] initWithCustomView:btn]; self.navigationItem.leftBarButtonItem = bbiBack; UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(titleView.frame) - 40, 30)]; searchBar.placeholder = @"车牌号"; searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"]; searchBar.delegate = self; searchBar.showsCancelButton = YES; searchBar.autocorrectionType = UITextAutocorrectionTypeNo; UIView *searchTextField = searchTextField = [searchBar valueForKey:@"_searchField"]; searchTextField.backgroundColor = [UIColor colorWithRed:234/255.0 green:235/255.0 blue:237/255.0 alpha:1]; [searchBar setImage:[UIImage imageNamed:@"sort_magnifier"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal]; UIButton *cancleBtn = [searchBar valueForKey:@"cancelButton"]; //修改标题和标题颜色 [cancleBtn setTitle:@"取消" forState:UIControlStateNormal]; [cancleBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [titleView addSubview:searchBar]; self.searchBar = searchBar; [self.searchBar becomeFirstResponder]; self.navigationItem.titleView = titleView; self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:nil]; } - (void)presentVCFirstBackClick:(UIButton *)sender { [_searchBar resignFirstResponder]; [self.navigationController popToRootViewControllerAnimated:YES]; } - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { [self.searchBar resignFirstResponder]; } - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { searchBar.showsCancelButton = YES; } - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { }

      

     

  • 相关阅读:
    typora, OneNote, notion, hexo, csdn,博客园对比
    Ubuntu18.04虚拟机下,docker拉取Oralce镜像
    [问题日志]wsl子系统卸载后重装出现故障的解决方案
    b站如何一次性取关10人
    (未完)CCF第24+25届全国计算辅助设计与图形学学术会议简记
    foolrenderer构建记录
    阿里云付哲:边缘云技术创新 让“云”无处不在
    从阿里云全球实时传输网络GRTN出发,浅谈QOE优化实践
    源于加速,不止加速 阿里云加速引擎的10年演化之路
    低成本、强交互、沉浸式的云游戏,究竟如何实现?
  • 原文地址:https://www.cnblogs.com/xuaninitial/p/6729874.html
Copyright © 2020-2023  润新知