我一直在尝试在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);
}

当我运行它时,它返回如下内容:
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()”显然返回有关需要手动设置观察者的信息。但是我还无法弄清楚如何将其应用于我的问题。

谁能对此提供一些见识?

最佳答案

首先,您将需要创建一个 private 变量来容纳一次性观察者:

private IDisposable progressObserver;

然后从AddObserver返回值分配它,但是将其放在 ViewWillAppear 方法中:
this.progressObserver = webView.AddObserver(
    "estimatedProgress",
    NSKeyValueObservingOptions.New,
    ProgressObserver);

将其放置在 ViewWillDisappear 中:
this.progressObserver.Dispose();

关于ios - WKWebView的观察者在哪里/如何手动配置estimateProgress,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33752501/

10-13 06:34