2016-06-27 4 views
0

(с использованием Xcode 8b0 на 10.11.5, но проблема также возникает при 7.3)NSImageViewl Выделение/Выбор

Мое приложение использует NSColorWell и два NSImageWells, чтобы позволить пользователям установить фон (цвет, изображение, рисунок) , ColourWell ведет себя отлично. В двух лунках изображений нет: если вы нажмете на один, он будет выбран, и невозможно отменить выбор обоих (это то, что я хочу, если я использую colourWell.)

NSImageView не имеет деактивации или отмены выбора метод. isHighlighted false, даже если изображениеWell четко отмечено как выбранное; установка подсветки на изображении или в ячейке не имеет визуального эффекта.

Память выбора сохраняется даже между перезапусками приложения, что заставляет меня думать, что это должно быть сохранено в раскадровке, так как только я не могу решить, какое свойство несет ответственность (я прочитал документацию для NSImageView и NSControl без удачи).

Используя забавный танец, позволяющий отключить и настроить мои изображения в определенном порядке (вам нужно включить тот, который вы хотите отобразить в качестве первого), в сочетании с подклассом NSImageView, чтобы переопределить «mouseDown», чтобы он отправил уведомление, Я захватываю, чтобы инициировать действие imageWell у меня есть поведение, которое я хочу, но я бы очень хотел, чтобы это было проще, поскольку «включить/отключить элементы управления в определенном порядке» похоже на взломать. (Таким образом, увы, кажется, добавляет соответствующую поддержку drag-and-drop в NSButton, я действительно , например, функция «drop image, have background change»).

Кто или что заставляет мои NSImageViews выделяться и как я могу контролировать это поведение?

Screenshot illustrating unwanted highlight

ответ

0

Ответ в том, что это не является событием, поэтому настройка isHighlighted ложного делает ничего. NSImageView имеет свойство с именем allowsCutCopyPaste - и если для этого параметра установлено значение «истина», то в этом ярлыке будет отображаться изображениеWell - или текущее активное изображение, если у вас более одного.