KVO代码

第一个参数就是要监听的对象,就是监听谁

第二个参数就是观察者,负责处理监听事件的对象,就是谁监听

第三个参数就是监听对象的属性,就是属性名

第四个参数一般就是NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld就是发生改变的时候

第五个参数就是传递的数据,属于备用参数

1
2
[self.webView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];

然后当参数发生改变的时候就会调用方法

keyPath就是属性名

可以同时监听多个参数

根据keyPath可以判断是哪个属性发生改变的然后执行相应的操作

1
2
3
4
5
6
7
8
9
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"canGoBack"])
{
}
else if ([keyPath isEqualToString:@"canGoForward"])
{
}
}

最后就是在dealloc方法里移出KVO

1
2
[self.webView removeObserver:self forKeyPath:@"canGoBack"];