/ / Всеки пример за потребителски NSComboBox? - мако, какао, nscombobox

Всеки пример за потребителски NSComboBox? - мако, какао, nscombobox

Поискано ми е да приложа такава комбинация:

въведете описанието на изображението тук

Ясно е, че това е съвсем друго различен от NSComboBox:
<1> Бутонът до текстовото поле трябва да бъде персонализиран
<2> Това е много по-важно: има допълнителен "кръст" (който е бутон, показващ действие "изтриване") във всяка от комбинираните елементи.

Как мога да постигна този ефект? Търсих интернет, но не отговорих. Може ли някой да ми каже какво трябва да направя това или да ми кажете някой пример за подкласиране или персонализиране клас NSComboBox?

Отговори:

3 за отговор № 1

NSComboBox е изглед, но поради причини, които не мога да намеря тук, интерфейсът е съставен от придружаващ клетъчен клас: NSComboBoxCell, За обичайния рисунък обикновено трябва даподклас на типа клетка (в този случай NSComboBoxCell), внедрете целия чертеж, който искате в своя подклас на персонализирани клетки и след това направете оглед да използвате клетката си с -setCellClass: или -setCell: метод.

В този случай обаче NSComboBox наследява от NSTextField и NSComboBoxCell наследява от NSTextFieldCell, така че и двете вече се прилагат -setBackgroundColor: и -setTextColor:; така че трябва да е сравнително лесно да нарисувате белия фон и синия текст.

Не съм сигурен как NSComboBox черпи "падащото"меню ", не мога да видя как да го персонализирам, но съм сигурен, че е възможно. Вероятно ще трябва да играете вътре в методите на рисуване на NSCell, за да видите,

Последният проблем, който ще срещнете, е поставянето накръстче в текстовото поле. Ще трябва да приложите рисунката на кръста, използвайки чертожните методи на NSCell по-горе, но за да преодолеете кликванията с мишката, трябва да направите това с NSView (защото NSCell не се занимава с взаимодействия). трябва също така да подклас NSComboBox и да следите кога мишката влиза в частта на изгледа, където е съставен кръстът.

Това е доста сложно, така че може би има друг начин. Наясно ли сте за NSPopover?

NSPopover

Много по-лесно би било да се приложи нещоподобно на NSPopover. Изображението притежава изглед, така че да не се налага да се забърквате с NSCell методи. Попът може да съдържа списък с имена и NSButton (който е кръстът).