Для проблемы 1 нет, это поведение системы для NSColorWell
. Не нравится это? сделай свой.
Задача 2 имеет два возможных решения.
Метод 1: Соедините действие из цветного колодца с вашим объектом в IB и считайте цвет этого цветного колодца через розетку из вашего класса. Любое изменение цвета в колодце отправит сообщение выбранному вами селектору.
Метод 2: Добавьте свой собственный объект в качестве наблюдателя в свойство color
[colorwell addObserver:self forKeyPath:@"color" options:0 context:NULL];
затем реализовать
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Любое изменение цвета вызовет этот метод.
Обязательно отсоедините от цветного колодца в dealloc
или другом методе разбивки:
[colorwell removeObserver:self forKeyPath:@"color"]
Есть способ сделать это и с привязками, но с этими двумя все в порядке.