UISearchController

一舞痰、簡介

UISearchController是iOS 8 之后推出的一個新的控件, 用于創(chuàng)建搜索條, 及管理搜索事件土榴,一般不單獨使用。都是與tableView 結(jié)合使用响牛。

二玷禽、屬性及方法

  1. 初始化方法

    initWithSearchResultsController (nullable UIViewController *)
    參數(shù)為空,表示使用當(dāng)前控制器作為展示結(jié)果的控制器呀打。否則矢赁,使用指定的控制器作為顯示結(jié)果的控制器

  2. 兩個代理
    (1) UISearchControllerDelegate該代理中的方法用來告知用戶結(jié)果視圖的狀態(tài)(即將出現(xiàn),已經(jīng)出現(xiàn)贬丛,即將消失撩银,已經(jīng)消失);
    (2) UISearchResultsUpdating 該代理中updateSearchResultsForSearchController方法每輸入一個字符就會執(zhí)行該方法一次豺憔,在此方法中進(jìn)行數(shù)據(jù)的更新及表視圖的刷新

  3. 屬性

// active 屬性就是當(dāng)前 searchController 是不是處于激活狀態(tài).只要點擊 searchBar,active 就會被置為 true.
@property (nonatomic, assign, getter = isActive) BOOL active;

// 搜索框额获,根據(jù)需求可進(jìn)行自定義
@property (nonatomic, strong, readonly) UISearchBar *searchBar;

// 只讀屬性,展示結(jié)果的視圖控制器
@property (nullable, nonatomic, strong, readonly) UIViewController *searchResultsController;

// 搜索時,背景是否變暗色 恭应,默認(rèn)為YES
@property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation
  
// 搜索時抄邀,背景是否變模糊 默認(rèn)為YES
@property (nonatomic, assign) BOOL obscuresBackgroundDuringPresentation NS_AVAILABLE_IOS(9_1);

// 是否隱藏導(dǎo)航欄,默認(rèn)為YES
@property (nonatomic, assign) BOOL hidesNavigationBarDuringPresentation; 
  1. 個性化設(shè)置
// 通過此種方式可以獲取到searchBar內(nèi)部的輸入框昼榛,根據(jù)需要可對其進(jìn)行個性化設(shè)置
UITextField *searchTextField = [self.systemSearchController.searchBar valueForKey:@"_searchField"];

三境肾、代理

  1. UISearchControllerDelegate
//當(dāng)自動呈現(xiàn)或刪除發(fā)生時,調(diào)用這些方法。如果自己呈現(xiàn)或取消搜索控制器准夷,它們將不會被調(diào)用钥飞。
- (void)willPresentSearchController:(UISearchController *)searchController;
- (void)didPresentSearchController:(UISearchController *)searchController;
- (void)willDismissSearchController:(UISearchController *)searchController;
- (void)didDismissSearchController:(UISearchController *)searchController;

// 在搜索控制器的搜索欄同意開始編輯或“active”被設(shè)置為YES時調(diào)用。如果您選擇不呈現(xiàn)控制器或不實現(xiàn)此方法衫嵌,則將代表您執(zhí)行默認(rèn)表示读宙。
- (void)presentSearchController:(UISearchController *)searchController;

四、使用系統(tǒng)搜索控制器所遇到的坑及解決方式

1楔绞、搜索結(jié)果頁tableView向下偏移结闸,如圖:


tableView向下偏移

解決方法:

第一個界面添加:

self.definesPresentationContext = YES;

第二個界面添加:

self.edgesForExtendedLayout =UIRectEdgeNone;
  1. warning 如果進(jìn)入預(yù)編輯狀態(tài),searchBar消失(UISearchController套到?TabBarController可能會出現(xiàn)這個情況),請?zhí)砑酉逻呥@句話</color>
   self.definesPresentationContext = YES;
  1. iOS11之后searchController有了新樣式,可以放在導(dǎo)航欄
   if (@available(iOS 11.0, *)) {
       self.navigationItem.searchController = self.searchController;
   } else {
       self.tableView.tableHeaderView = self.searchController.searchBar;
   }
  1. 在iOS 11上運行tableView向下偏移64px或者20px酒朵,因為iOS 11廢棄了automaticallyAdjustsScrollViewInsets桦锄,而是給UIScrollView增加了contentInsetAdjustmentBehavior屬性。避免這個坑的方法是要判斷
if (@available(iOS 11.0, *)) {
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔫耽,一起剝皮案震驚了整個濱河市结耀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匙铡,老刑警劉巖图甜,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鳖眼,居然都是意外死亡黑毅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門钦讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矿瘦,“玉大人,你說我怎么就攤上這事愿卒「咳ィ” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵掘猿,是天一觀的道長病游。 經(jīng)常有香客問我,道長稠通,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任买猖,我火速辦了婚禮改橘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玉控。我一直安慰自己飞主,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碌识,像睡著了一般碾篡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筏餐,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天开泽,我揣著相機(jī)與錄音,去河邊找鬼魁瞪。 笑死穆律,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的导俘。 我是一名探鬼主播峦耘,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼旅薄!你這毒婦竟也來了辅髓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤少梁,失蹤者是張志新(化名)和其女友劉穎利朵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猎莲,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡绍弟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了著洼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片樟遣。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖身笤,靈堂內(nèi)的尸體忽然破棺而出豹悬,到底是詐尸還是另有隱情,我是刑警寧澤液荸,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布瞻佛,位于F島的核電站,受9級特大地震影響娇钱,放射性物質(zhì)發(fā)生泄漏伤柄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一文搂、第九天 我趴在偏房一處隱蔽的房頂上張望适刀。 院中可真熱鬧,春花似錦煤蹭、人聲如沸笔喉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽常挚。三九已至作谭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奄毡,已是汗流浹背折欠。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留秧倾,地道東北人怨酝。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像那先,于是被迫代替她去往敵國和親农猬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1售淡、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,980評論 3 119
  • 這周是新教師聽診課斤葱,自己也為這節(jié)課做了準(zhǔn)備,昨天我的課已落下帷幕揖闸,心里著實輕松了許多揍堕,今天早上聽了羅歡歡同學(xué)的體育...
    春夏AI閱讀 345評論 1 1
  • 一曲漫漫夜,何人獨闌珊汤纸? 敬濁酒一杯衩茸,勸君莫回頭!
    一得閣閱讀 188評論 0 4
  • 我想折一朵桃花送你贮泞, 你可以別在胸前楞慈,最好夾進(jìn)你最愛的書里。 我還想在橡樹前啃擦, 踮著腳尖吻一吻你囊蓝, 你可以靜默在風(fēng)...
    喻知曉閱讀 280評論 2 3
  • 你有沒有這樣的時刻聚霜,只想一個人靜靜呆著。誰也不想理珠叔。 不管是陌生人蝎宇,朋友,抑或是戀人給你發(fā)的消息运杭,明明看見了夫啊,但是...
    晶晶歐尼的傻瓜閱讀 11,404評論 0 1