1. 程式人生 > >UISearchController使用方法及注意事項

UISearchController使用方法及注意事項

http://blog.csdn.net/kenrry1992/article/details/50799722

在進行iOS開發的時候,有時候涉及到搜尋功能,實現搜尋功能的方法有很多,可以是用自定義的搜尋控制元件,也可以用sdk提供的UISearchController(ios8以後)、UISearchDisplayController(ios8之前);

下面介紹UISearchController使用方法及注意事項:

//設定UISearchController的顯示屬性,以下3個屬性預設為YES
    //搜尋時,背景變暗色
    _searchController.dimsBackgroundDuringPresentation = NO;
    
//搜尋時,背景變模糊 _searchController.obscuresBackgroundDuringPresentation = NO; //隱藏導航欄 _searchController.hidesNavigationBarDuringPresentation = NO;

        _searchController = [[UISearchController alloc] initWithSearchResultsController:_viewController];

        _searchController.searchResultsUpdater = self;  //設定UISearchResultsUpdating協議

代理

        _searchController.delegate = self;        //設定UISearchControllerDelegate協議代理

        _searchController.dimsBackgroundDuringPresentation = NO;            //是否新增半透明覆蓋層

        _searchController.hidesNavigationBarDuringPresentation = YES;     //是否隱藏導航欄

        [self.view addSubview:_searchController.searchBar];                    //此處重要一步,將searbar顯示到介面上

另外需要注意在合適的地方新增下面一行程式碼

            self.definesPresentationContext = YES;

這行程式碼是宣告,哪個viewcontroller顯示UISearchController,蘋果開發中心的demo中的對這行程式碼,註釋如下

// know where you want UISearchController to be displayed

a、如果不新增上面這行程式碼,在設定hidesNavigationBarDuringPresentation這個屬性為YES的時候,搜尋框進入編輯模式會導致,searchbar不可見,偏移-64;

在設定為NO的時候,進入編輯模式輸入內容會導致高度為64的白條,猜測是導航欄沒有渲染出來

b、如果添加了上面這行程式碼,在設定hidesNavigationBarDuringPresentation這個屬性為YES的時候,輸入框進入編輯模式正常顯示和使用;在設定為NO的時候,搜尋框進入編輯模式導致向下偏移64,具體原因暫時未找到