![](/img/trans.png)
[英]NSTableCellView / NSTextField did end editing notification — without text change?
[英]How can you change the highlight color of a NSTextField within a NSTableCellView?
在情節NSTableCellView
,當我將NSTableCellView
中的NSTextField
的文本顏色設置為Control Text Color
,顏色變為黑色,而選中/突出顯示該單元格的顏色將變為白色。 取消選擇時,顏色將恢復為黑色。 您可以免費獲得所有這些行為。
我在默認情況下創建了另一個文本字段,該字段與iOS相似(請參見下圖中的標簽Game)。 我將“文字顏色”更改為灰色,並且一切正常。 但是,當我現在選擇/突出顯示該單元格時,顏色仍為灰色,並且不會交換為白色。 如何通過情節提要獲得這種行為? 如果不可能,通過代碼?
沒有自動獲得所需內容的方法。 您看到的帶有黑色標簽的自動行為是由NSTextFieldCell
(或其超類之一,如NSCell
)實現的。 它是通過將單元格的backgroundStyle
為NSBackgroundStyleDark
。 細胞的backgroundStyle
被設置NSTableCellView
當自己的backgroundStyle
設置。 當NSTableRowView
的interiorBackgroundStyle
更改時, NSTableCellView
的backgroundStyle
會由NSTableRowView
設置,而在設置其其他屬性(如selected
和emphasized
時會發生這種情況。
無論如何,如果單元格的textColor
為[NSColor controlTextColor]
或具有相等的RGB值,則該單元格只會自動更改其繪制的顏色。 因此,它不適用於您的灰色標簽。
您可以實現NSTableCellView
或NSTextField
的自定義子類。 您的類將實現(對於NSTableCellView
的子類NSTableCellView
) -setBackgroundStyle:
在您的方法中,您可以檢查正在設置的樣式並更改文本字段的textColor
。 如果它是替代,請調用super。 (盡管NSTextField
當前未實現backgroundStyle
屬性,但將來可能會實現。Apple表示將為控件僅在單元格類中存在的方法添加Cover方法。因此, if ([NSTextField instancesRespondToSelector:@selector(setBackgroundStyle:)]) [super setBackgroundStyle:backgroundStyle];
以確保將來安全。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.