Where/how 手动处理 WKWebView estimatedProgress 的观察者
Where/how to manually dispose observer of WKWebView estimatedProgress
我一直在尝试在 Xamarin ios UIViewController 中使用 "estimatedProgress" 属性 上的 KVO 跟踪 WKWebView 的估计加载进度。
我这样添加观察者:
public override void ViewDidLoad()
{
base.ViewDidLoad();
...
WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, ProgressObserver);
...
}
ProgressObserver 看起来像这样:
public void ProgressObserver(NSObservedChange nsObservedChange)
{
Console.WriteLine("Progress {0}", WkView.EstimatedProgress);
}
当我 运行 这个 returns 是这样的:
2015-11-17 09:29:15.345 testappiOS[10056:1381155] Progress 0.1
2015-11-17 09:29:15.636 testappiOS[10056:1381155] Progress 0.285892975242258
2015-11-17 09:29:15.949 testappiOS[10056:1381169] Warning: observer object was not disposed manually with Dispose()
谷歌搜索“Warning: observer object was not disposed manually with Dispose()”returns 显然需要手动处理观察者的信息。但我一直无法弄清楚如何将其应用于我的问题。
任何人都可以对此提供一些见解吗?
首先你需要创建一个私有变量来保存一次性观察者:
private IDisposable progressObserver;
然后从 AddObserver return 值中分配它,但将它放在 ViewWillAppear 方法中:
this.progressObserver = webView.AddObserver(
"estimatedProgress",
NSKeyValueObservingOptions.New,
ProgressObserver);
在ViewWillDisappear中处理它:
this.progressObserver.Dispose();
我一直在尝试在 Xamarin ios UIViewController 中使用 "estimatedProgress" 属性 上的 KVO 跟踪 WKWebView 的估计加载进度。
我这样添加观察者:
public override void ViewDidLoad()
{
base.ViewDidLoad();
...
WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, ProgressObserver);
...
}
ProgressObserver 看起来像这样:
public void ProgressObserver(NSObservedChange nsObservedChange)
{
Console.WriteLine("Progress {0}", WkView.EstimatedProgress);
}
当我 运行 这个 returns 是这样的:
2015-11-17 09:29:15.345 testappiOS[10056:1381155] Progress 0.1
2015-11-17 09:29:15.636 testappiOS[10056:1381155] Progress 0.285892975242258
2015-11-17 09:29:15.949 testappiOS[10056:1381169] Warning: observer object was not disposed manually with Dispose()
谷歌搜索“Warning: observer object was not disposed manually with Dispose()”returns 显然需要手动处理观察者的信息。但我一直无法弄清楚如何将其应用于我的问题。
任何人都可以对此提供一些见解吗?
首先你需要创建一个私有变量来保存一次性观察者:
private IDisposable progressObserver;
然后从 AddObserver return 值中分配它,但将它放在 ViewWillAppear 方法中:
this.progressObserver = webView.AddObserver(
"estimatedProgress",
NSKeyValueObservingOptions.New,
ProgressObserver);
在ViewWillDisappear中处理它:
this.progressObserver.Dispose();