搜尋

首頁  >  問答  >  主體

objective-c - iOS監聽isFirstResponder的變化

我想監聽一個UISearchBar的isFirstResponder的值的變化,採用瞭如下程式碼:


[_searchBar addObserver:self forKeyPath:@"_isFirstResponder" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSLog(@"test");
    return ;
}

在UISearchBar的delegate方法中可以看到isFirstResponder確定已經改變了,但是卻沒有輸出"test",用searchBar.observationInfo也可以看到該監聽器確實是已經添加成功了,請問誰有沒有碰到過這種情況?

天蓬老师天蓬老师2836 天前745

全部回覆(2)我來回復

  • 習慣沉默

    習慣沉默2017-04-28 09:07:33

    並不存在「_isFirstResponder」這樣的key!可以透過valueForKey或是valueForKeyPath判斷!如果想監聽這個屬性可以自訂UISearchBar,重寫becomeFirstResponder和resignFirstResponder兩個方法,使用Notification或delegate或block傳遞訊息

    回覆
    0
  • PHPz

    PHPz2017-04-28 09:07:33

    建議可以了解下RAC,這個用RAC可以輕鬆解決。

    回覆
    0
  • 取消回覆