gpt4 book ai didi

html - 黑色输入背景 - Cocoa WebView

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:56 24 4
gpt4 key购买 nike

大家早上好

我一直在开发和维护一个包含 WebView 部分的 Cocoa 应用程序。它是针对 10.5 SDK 构建的,以保持 PPC 兼容性。随着最新的 Safari 更新(10.7.4 更新附带),所有 HTML 输入字段现在都有黑色背景。例如,此 HTML 显示如下...

Username: <input type="text" name="username" id="something" placeholder="something"/></br> 
Password: <input type="password" name="password" id="somethingelse" placeholder="somethingelse"/>

enter image description here

我玩过“背景色”样式,还玩过我发现的几个 webkit 样式 here没有太多运气。奇怪的是,这个页面通过 Safari 正常显示,而不是通过 Cocoa WebView。有人对尝试的事情有什么建议吗?

最佳答案

我们的应用程序遇到了同样的事情,所以我做了一些挖掘。看起来 WebKit 已更新为使用 NSTextFieldCell 来绘制字段背景而不是旧的私有(private) API:

最后的修订看起来最接近发布的版本,但不完全是(WebCore 二进制文件中缺少 WebCoreTextFieldCell)。由于 10.7.4 源尚未启动,我们假设这已经足够了。

重要的一点是 NSTextFieldCell 被设置为使用 [NSColor clearColor] 绘制其背景。当然,期望的效果是让它呈现透明,而不是掩盖它下面的内容。这假设合成模式设置为 NSCompositeSourceOver。

不幸的是,在 10.6 之前,NSTextFieldCell 使用 NSCompositeCopy [ 4 ].与早期应用程序的向后兼容性是通过检查 SDK 版本实现的,这意味着链接到早期 SDK 的应用程序实际上最终会复制清晰的颜色而不是合成它。这最终会造成可怕的黑色困惑。

既然已经了解了问题,我们就可以进入“要尝试的建议”部分了。这里有一些想法:

  • 等待 Apple 意识到他们的错误并发布更新。
  • Swizzle -[NSTextFieldCell drawInteriorWithFrame:inView:] 如果控件 View 是 WebHTMLView,则不绘制背景。这听起来很脆弱,可能会对 Mac App Store 产生影响。
  • 针对 10.6 SDK 重新编译。

我肯定会选择最后一个选项。

关于html - 黑色输入背景 - Cocoa WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com