我想監聽一個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也可以看到該監聽器確實是已經添加成功了,請問誰有沒有碰到過這種情況?
並不存在「_isFirstResponder」這樣的key!可以透過valueForKey或是valueForKeyPath判斷!如果想監聽這個屬性可以自訂UISearchBar,重寫becomeFirstResponder和resignFirstResponder兩個方法,使用Notification或delegate或block傳遞訊息
建議可以了解下RAC,這個用RAC可以輕鬆解決。