2013-12-11 32 views
3

在我的.xib中,我在NSView中放置了一個NSColorWell,並將控制器中的IBAction連接到NSColorWell的發送操作(通過文件所有者)。我想我會響應我的控制器中的一個點擊併發送激活來調出NSColorPanelNSColorWell不會發送點擊操作?

但不像其他我的控件,我沒有得到IBAction調用。單擊將調用顏色的拖動操作。我注意到這個控件並不是來自NSActionCell(就像我所有的其他控件一樣)。什麼是適當的控制,應該用於顯示顏色和調用點擊時調用NSColorWell

(注:這是Xcode中/ IB 3.2.x中)

回答

6

你列在標籤都osxios,但我猜這是一個OS X的問題。

IB的屬性檢查器中有一個「邊框」複選框用於NSColorWell。這樣可以很好地切換按鈕樣式的顏色,這就是您要求的顏色,以及只能從中拖動顏色樣本的顏色。確保已選中,您將獲得您期望的操作。

+0

謝謝,尼克,你絕對正確!使用IB的人甚至都知道這是「邊界」複選框的功能?奇怪的是,這些邊界真的很厚,而且這種控制不支持「小」或「小」控制尺寸。現在我只需要弄清楚如何讓我的控件回調 - NSColorWell「action」不會被調用。我假設我需要獲取NSColorPanelColorDidChangeNotification? – SMGreenfield

+1

您可能不想使用它,因爲它可能來自NSColorPanel的不同實例。 (例如,在任何NSTextView中右鍵單擊,您將可以進行字體>顯示顏色,調色板也會隨之出現。)相反,您應該將需要了解變更的對象綁定到NSColorWell,然後在-observeValueForKeyPath中作出反應:...。你也可以繼承該井,併爲其提供一個委託,當調用-setObjectValue:時會被調用,但這聽起來對於這種情況有點矯枉過正。 –

+0

你當然可以監聽NSColorPanelColorDidChangeNotification,並檢查通知的對象屬性以與你的實例進行比較。這可能比我的其他兩個建議更容易。 :-) –