Какао рисунок кликабельный текст

Я пытаюсь нарисовать текст, который можно щелкнуть. Я пытаюсь не использовать NSButton, поскольку мой текст рисуется в drawRect, и использование NSButton в drawRect заставляет его добавлять подвид поверх самого себя, если вы не пройдете и не удалите все подпредставления при каждом вызове drawRect.

Я попытался создать NSButton и вместо того, чтобы добавить его в качестве подвида, я вызываю [myBtn.cell drawTitle: withFrame: inView:], который рисует текст, но он не активен.

Есть ли способ рисовать текст (например, с помощью drawInRect), но где я также могу сделать текст кликабельным?

Если нет, то что бы вы порекомендовали? Используя стандартный NSButton и каждый раз очищая все подвиды?


person kdbdallas    schedule 27.06.2011    source источник


Ответы (1)


Один из способов, который я видел раньше, это использование NSAttributedString. Та часть, которая кликабельна, должна быть как-то изменена (т.е. иметь разные NSForegroundColorAttributeName и NSUnderlineStyleAttributeName), а затем присоединить к ней NSURL с NSLinkAttributeName.

Если я правильно помню, я считаю, что это подкласс NSTextField, который делает следующее: DSClickableURLTextField

Я бы рекомендовал не рисовать текст самостоятельно, потому что в AppKit есть много вещей, которые сделают это за вас. Зачем нужно рисовать самому?

person Dave DeLong    schedule 27.06.2011
comment
Основная причина, по которой я рисую сам, заключается в том, что если вы добавите подвид в drawRect, вам придется очищать подвиды при каждом запуске drawRect, иначе вы получите несколько подвидов друг над другом. Я предполагаю, что это сводится к тому, что я, вероятно, не должен делать свой текст/метки в drawRect.... Вероятно, это правильное решение.... - person kdbdallas; 28.06.2011
comment
@kdbdallas мое общее правило заключается в том, что если что-то еще может нарисовать это для вас, пусть это делает. :) - person Dave DeLong; 28.06.2011