响应滚动 - setWantsLayer Webkit问题

时间:2014-02-09 20:34:51

标签: macos cocoa webview scroll layer

我的项目是在Xcode 3中构建的基础SDK 10.6上 - 重要的是它是一个通用二进制文件,也适用于PPC。

在10.9中,我的应用程序与Safari相比实际上是滚动的 - 如果我添加

[self setWantsLayer:YES];像Safari这样的滚动非常快!太棒了!

然而,滚动时会出现视觉故障,请参阅eBay的屏幕截图,其中应该固定在页面底部的合法图像不断重复。

我知道setWantsLayer不应该与webKit一起使用,但无论如何都要阻止这些视觉故障,或者是否有另一种方法可以在不使用setWantsLayer的情况下进行平滑滚动。

Issue with eBay

上面是eBay滚动时的问题,下面是Twitter滚动时的问题,发生在各种网站上,尤其是固定对象。

Issue with Twitter

Twitter问题

1 个答案:

答案 0 :(得分:0)

实际上我原本以为下面的解决方案是一个解决方案而没有意识到我回到了可怕的跳跃滚动。我留待它参考。

我在这里遇到了同样的问题。

我发现,如果我在子类中实现了canDrawSubviewsIntoLayer,那么渲染的毛刺就会被修复。

所以在initWithCoder / initWithFrame方法中调用:

[self setWantsLayer:YES];

然后实现canDrawSubviewsIntoLayer

- (BOOL)canDrawSubviewsIntoLayer {
    return YES;
}

您需要继承webView。我还发现,如果您将NSView子类化为NSView子类并在NSView子类中执行相同操作,那么同样可以正常工作,但由于我不明白为什么可行,我的建议是将webView子类化。

我希望它可以帮助你并帮助他人。