Использование NSProgressIndicator внутри NSMenuItem

Я пытаюсь использовать NSProgressIndicator (неопределенный) внутри меню строки состояния. Я использую объект NSView в качестве представления для элемента меню, а затем просматривает индикатор выполнения для его отображения. Но всякий раз, когда я пытаюсь вызвать startAnimation: для прогресса ничего не происходит. Когда я пытаюсь сделать то же самое в обычном NSWindow, он работает отлично, только не внутри элемента меню.

Я новичок как в какао, так и в objective-c, поэтому я мог пропустить что-то "очевидное", но я ' Мы довольно долго искали обходной путь, но безуспешно. Я обнаружил, что элементы меню не могут быть обновлены, пока отображаются, и что вместо этого вам нужно использовать окно без рамки. Но мне не удалось подтвердить это в какой-либо документации.

Изменить:

Хорошо, сейчас почти работает. При использовании setUsesThreadedAnimation: и из MenuDelegate в menuWillOpen и создании нового потока. Этот поток запускает локальный метод:

-(void) doWork(NSProgressIndicator*) p{
     [p startAnimation:self];
}

При открытии меню будет запускаться индикатор прогресса на случайной (?) Основе. Если я вызываю startAnimation: напрямую, не проходя через doWork: (все еще используя новый поток), это никогда не сработает. Разве setUsesThreadedAnimation: не заставляет индикатор выполнения создавать собственный поток для анимации?

7
задан Shoe 2 January 2013 в 10:09
поделиться