2013-12-11 2 views
3

Внутри моего .xib, я разместил NSColorWell внутри NSView и подключил IBAction к контроллеру к отправленным действиям NSColorWell (через владельца файла). Я решил, что отвечу на клик в своем контроллере и отправлю активировать, чтобы открыть NSColorPanel.NSColorWell не отправляет действие на клик?

Но в отличие от других моих элементов управления, я не получаю вызываемый IBAction. Щелчок вызывает действие перетаскивания на цвет. Я заметил, что этот элемент управления не получается из NSActionCell (как и все мои другие элементы управления). Каков правильный контроль, который должен использоваться для отображения цвета и вызова NSColorWell при нажатии?

(примечание: это Xcode/IB 3.2.x)

ответ

6

Вы перечислены как osx и ios в тегах, но я предполагаю, что это проблема OS X.

В инспекторе атрибутов IB для NSColorWell установлен флажок «Пограничный». Это очень удобно переключает цвет кнопки в стиле кнопки, что вы просите, и цветную колоду, из которой вы можете только перетащить образец цвета. Убедитесь, что этот флажок установлен, и вы получите действие, как вы ожидаете.

+0

Спасибо, Ник, ты был абсолютно прав! Как в мире кто-нибудь, кто использует IB, даже знает, что это функция флажка «Bordered»? Как ни странно, эти границы действительно ТОЛСТЫЕ, и этот контроль не поддерживает «небольшие» или «мини» размеры управления. Теперь мне просто нужно выяснить, как заставить меня контролировать, - действие NSColorWell «не вызвано». Я предполагаю, что мне нужно получить NSColorPanelColorDidChangeNotification? – SMGreenfield

+1

Вы, вероятно, не хотите использовать это, потому что это может происходить из другого экземпляра NSColorPanel. (Например, щелкните правой кнопкой мыши в любом NSTextView, и вы сможете выбрать «Шрифт»> «Показать цвета». Тогда также появится палитра.) Вместо этого вы должны привязать объект, который должен знать об изменении, к значению NSColorWell, а затем отреагируйте на -observeValueForKeyPath: .... Вы также можете подклассифицировать колодец и предоставить ему делегат, который вызывается, когда вызывается -setObjectValue:, но это звучит как излишний для этого случая. –

+0

Вы можете, конечно же, прослушать '' '' NSColorPanelColorDidChangeNotification''' и проверить свойство '' 'object''' уведомления, чтобы сравнить его с вашим экземпляром. Это может быть еще проще, чем в моих двух других предложениях. :-) –

Смежные вопросы