Ios 在何处/如何手动处理WKWebView estimatedProgress的观察者

Ios 在何处/如何手动处理WKWebView estimatedProgress的观察者,ios,xamarin,dispose,key-value-observing,wkwebview,Ios,Xamarin,Dispose,Key Value Observing,Wkwebview,我一直在尝试在Xamarin ios UIViewController中的“estimatedProgress”属性上使用KVO跟踪WKWebView上的估计加载进度 我添加了这样一个观察者: public override void ViewDidLoad() { base.ViewDidLoad(); ... WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, Progress

我一直在尝试在Xamarin ios UIViewController中的“estimatedProgress”属性上使用KVO跟踪WKWebView上的估计加载进度

我添加了这样一个观察者:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    ...
    WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, ProgressObserver);
    ...
}
public void ProgressObserver(NSObservedChange nsObservedChange)
{
    Console.WriteLine("Progress {0}", WkView.EstimatedProgress);
}
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()
ProgressObserver如下所示:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    ...
    WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, ProgressObserver);
    ...
}
public void ProgressObserver(NSObservedChange nsObservedChange)
{
    Console.WriteLine("Progress {0}", WkView.EstimatedProgress);
}
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()
当我运行它时,它会返回如下内容:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    ...
    WkView.AddObserver("estimatedProgress", NSKeyValueObservingOptions.New, ProgressObserver);
    ...
}
public void ProgressObserver(NSObservedChange nsObservedChange)
{
    Console.WriteLine("Progress {0}", WkView.EstimatedProgress);
}
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()
显然,谷歌搜索“”会返回有关需要手动处理观察者的信息。但是我还没有弄明白如何把这个应用到我的问题上


有人能对此提供一些见解吗?

首先,您需要创建一个私有变量来保存一次性观察者:

private IDisposable progressObserver;
然后从AddObserver返回值中分配它,但将其放在视图将显示的方法中:

this.progressObserver = webView.AddObserver(
    "estimatedProgress", 
    NSKeyValueObservingOptions.New, 
    ProgressObserver);
视图中处理它将消失

this.progressObserver.Dispose();