2013-12-23 4 views
4

В Mavericks появилось новое меню смайликов, нажимая ctrl + cmd + space. Я хочу добавить небольшую кнопку рядом с текстовым полем, которое открывает это меню и отправляет смайлик в текстовое поле.Как открыть новое меню смайликов по коду в Mavericks

Я думал о посылке нажатия клавиши, но это может измениться. Есть ли другой путь ? Спасибо.

ответ

4

orderFrontCharacterPalette: подходит вам?

[NSApp orderFrontCharacterPalette:nil]; 

Это было вокруг некоторое время (10.3), но смысл в заказе палитры на фронт может измениться в 10.9.

В случае, если это интересно, я нашел способ, вставив фиктивный подкласс NSTextView:

@interface LoggingTextView : NSTextView 
@end 

Он регистрирует respondsToSelector: вызовы, которые он получает:

- (BOOL)respondsToSelector:(SEL)aSelector 
{ 
    NSLog(@"selector: %@", NSStringFromSelector(aSelector)); 
    return [super respondsToSelector:aSelector]; 
} 

В IB/XIB Я настроил текстовое представление для использования этого подкласса. Затем я запустил приложение и нажал Cmd-Ctrl-Space и проверил интересные имена селекторов. Возможно, вы также можете сделать это с помощью команды автоматического останова в LLDB.

Если вы сделаете это, убедитесь, что все, что появляется, опубликовано API, а не какой-либо внутренний метод, который может измениться в любой момент.

+0

Вы betcha, в то время как текстовое поле является первым ответчиком, оно работает так, как ожидалось. –

+0

Еще раз спасибо, это полезно! –