2012-05-14 36 views
2

大家好,黑色輸入背景 - 可可WebView

我一直在開發和維護一個包含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。有沒有人有任何建議要嘗試?

+0

您是使用CSS類來生成類還是使用內聯樣式? – TNCodeMonkey

+0

在這個簡單的例子中,我沒有使用任何CSS或內聯樣式。 index.html頁面正是粘貼的內容。當我玩風格時,我嘗試了線內和CSS。 – Staros

+0

您仍然可以在與新SDK進行鏈接時保持ppc兼容性。部署目標是這方面的重要設置 –

回答

2

全部。作爲臨時解決方法,請使用邊框來設置文本框的樣式。這對我有用:border:1px solid#000000;

+0

簡單而且風險很小。謝謝! – Staros

4

我們的應用程序遇到了同樣的事情,所以我做了一些挖掘。它看起來像WebKit的被更新爲使用NSTextFieldCell繪製的,而不是舊的私有API領域背景:

,最新的版本看起來最接近於運,但並不完全(WebCoreTextFieldCell缺乏WebCore二進制文件)。由於10.7.4源代碼還沒有出現,我們假設這是足夠的。

重要的是,NSTextFieldCell被設置爲使用[NSColor clearColor]繪製其背景。理想的效果當然是讓它變得透明,而不是掩蓋它下面的內容。這假定合成模式設置爲NSCompositeSourceOver。

不幸的是,在10.6之前,NSTextFieldCell使用了NSCompositeCopy [4]。通過檢查SDK版本實現了與早期應用程序的向後兼容性,這意味着與早期SDK鏈接的應用程序實際上最終將複製清除顏色而不是合成它。這最終導致了可怕的黑色混亂。

既然這個問題已經被理解了,我們就可以得到「嘗試的建議」部分。這裏有一些想法:

  • 等待Apple意識到他們的錯誤併發送更新。
  • 如果控件視圖是WebHTMLView,則Swizzle - [NSTextFieldCell drawInteriorWithFrame:inView:]不繪製背景。這聽起來很脆弱,可能會影響Mac App Store。
  • 針對10.6 SDK重新編譯。

我肯定會去最後一個選項。

+1

甚至比坐在希望修復更好的方法是提交一個雷達,理想情況下報告數字以便輕鬆複製 –

+0

11454320,如果有人想要欺騙它的話。 –

+0

之前我問過一個 - 11445540 – Staros

0

另一個解決方法。添加一個CSS樣式屬性到輸入元素: 不透明度:0。99;

3

也許稍微安全些,我發現在輸入元素樣式中加入-webkit-appearance: none;也可以。

+0

工程就像一個魅力:) – yoshi