iai*_*ain 8 cocoa-touch key-value-observing uiwebview
我已经设置了KVO通知来观看UIWebView的一些属性,就像这样
[webView addObserver:self
forKeyPath:@"canGoBack"
options:NSKeyValueObservingOptionNew
context:NULL];
Run Code Online (Sandbox Code Playgroud)
并有
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
Run Code Online (Sandbox Code Playgroud)
但它永远不会被召唤.我错过了什么或UIWebView是不可观察的?
sam*_*m-w 11
canGoBack是一个readonly属性:为了使它符合KVO,它必须readwrite在其实现中重新声明该属性,然后通过合成的setter设置属性.我怀疑它canGoBack只是通过它的ivar设置,它不会通过KVO系统发送通知:
[self setCanGoBack:YES]; // Would notify KVO observers (as long as any reimplementation of automaticallyNotifiesObserversForKey does place restrictions)
_canGoBack = YES; // Would not notify KVO observers
Run Code Online (Sandbox Code Playgroud)
这个相关的问题详细讨论了这个问题:是否可以在Cocoa Touch中观察对象的只读属性?
作为一种变通方法,您可以设置一个UIWebViewDelegate检查的价值[UIWebView canGoBack]在[UIWebViewDelegate webViewDidFinishLoad:].
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |