2012-03-26 4 views
1

Я начал создавать приложение для Mac для своего Notes-сайта. Это приложение основано на popover из строки меню. Внутри popover у меня есть текстовое поле, но оно не редактируется, хотя оно активировано. Вставка с помощью правого клика, например, работает ... Как я могу сделать этот popover интерактивным? В настоящий момент только звук ошибки mac os воспроизводится, когда я нажимаю клавишу.Popover редактируемый текст

Спасибо за помощь!

Code: 
- (void)awakeFromNib 
{ 
    active = false; 
    statusItem = [[NSStatusBar systemStatusBar] 
        statusItemWithLength:NSVariableStatusItemLength]; 
    [statusItem setHighlightMode:YES]; 
    [statusItem setTitle:[NSString 
          stringWithString:@"test"]]; 
    [statusItem setEnabled:YES]; 
    [statusItem setToolTip:@"test"]; 

    [statusItem setAction:@selector(StatusClicked:)]; 
    [statusItem setTarget:self]; 
} 
- (void)StatusClicked:(id)sender { 
    if(!active) { 
     [[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge]; 
     active = true; 
    } 
    else { 
     [popover close]; 
     active = false; 
    } 
} 

Вид содержит простой многострочный текст NSTextField.

Если это невозможно с помощью popover, есть ли другие возможности реализовать это? Какие элементы являются, например, FaceTab (Facebook для панели меню), поскольку текстовые поля доступны для редактирования.

+0

Там не должно быть ничего особенного, вы должны сделать, чтобы сделать его интерактивным. Вам нужно будет предоставить нам дополнительную информацию о том, как вы создали popover и его представление. – rdelmar

+0

Хорошо, я изменил вопрос и добавил код. – Dion

+0

Это похоже на ошибку. Было бы интересно посмотреть, видел ли кто-либо подобное поведение. Я скопировал ваш код в тестовый проект, который у меня был с popover (с кнопкой, кнопкой popup и текстовым полем). Попкорн и все его элементы управления работали должным образом при подключении к моему окну, но текстовое поле показывало поведение, которое вы описали, когда popover был прикреплен к элементу строки состояния - другие элементы управления работали нормально. – rdelmar

ответ

0

Похоже, вы создаете приложение «агент», без какого-либо другого интерфейса, кроме StatusItem. Вероятно, вы указали флаг LSUIElement в Info.plist. (В принципе, он позволяет создавать приложение без меню).

Он также имеет важные последствия для того, как реагируют «самые современные приложения» и «ключевое окно». В вашем методе «statusClicked» вы можете добавить:

[NSApp activateIgnoringOtherApps:YES]; 

так, чтобы ваше приложение действительно активировалось.

(Конечно, все мой комментарий не имеет никакого значения, если вы не пишете/агента Применение LSUIElement.)

+0

Да, LSUIElement активирован. Я отключил его и добавил код, но он все еще не работает :(«Является ли« агент »другим вариантом или чем-то активировать/деактивировать (потому что вы сказали приложение LSUIElement/agent)? Но спасибо за ваш ответ, хотя! – Dion

+0

Нет, Флаг LSUIElement делает его «агентным приложением». Хотя Apple не использует эти термины очень последовательно. –

Смежные вопросы