KVO - UIScrollView.contentSize误报?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVO - UIScrollView.contentSize误报?相关的知识,希望对你有一定的参考价值。
使用WKWebview,我试图监视webView.scrollView.contentSize
的变化。问题是我收到了相同大小的多个通知。每当我滚动时,即使contentSize保持不变,也会发送通知。我知道我可以通过在我的处理程序中跟踪以前的大小来解决这个问题,但我对KVO如何在引擎盖下工作并不担心这可能会很昂贵。
let handler = {(scrollView: UIScrollView, change: NSKeyValueObservedChange<CGSize>) in
if let contentSize = change.newValue {
print ("ContentSize", contentSize)
}
}
obs.insert(webView.scrollView.observe(UIScrollView.contentSize, options: [NSKeyValueObservingOptions.new], changeHandler: handler))
输出:(从滚动生成)
ContentSize (1366.0, 2061.0)
ContentSize (1366.0, 2061.0)
ContentSize (1366.0, 2061.0)
ContentSize (1366.0, 2061.0)
我不明白为什么要观察此通知,因为contentSize不是新值。我误会了什么吗?我应该自己存储prevSize并检查处理程序中的更改吗?
答案
UIKit中的类通常不支持KVO,如下所述:
“虽然UIKit框架的类通常不支持KVO,但您仍然可以在应用程序的自定义对象中实现它,包括自定义视图。”
除非将一个类记录为支持KVO,否则您应该假设它没有(即使它看起来有效)。它似乎适用于ios的一个版本,而不是下一个版本...
以上是关于KVO - UIScrollView.contentSize误报?的主要内容,如果未能解决你的问题,请参考以下文章