Маска стиля окна OS X Yosemite NSFullSizeContentViewWindowMask, потому что только нажатая кнопка представления коллекции может вызывать drawRect

Моя среда — OS X Yosemite 10.10.2. Xcode — это версии 6.1.1 и 6.2 beta4. Я написал приложение календаря для OS X. Я использовал структуру привязки какао, которую написал сам. И у меня возникла проблема. В представлении коллекции должна быть только одна кнопка дня фокуса. Но что-то не так. Приложение имеет несколько фокусов.

Я нашел заявление, вызывающее эту проблему. [[[[self view] window] setStyleMask:([[[self view] window].styleMask | NSFullSizeContentViewWindowMask)]; Когда приложение устанавливает NSFullSizeContentViewWindowMask, только нажатая кнопка представления коллекции будет вызывать drawRect из-за производительности. Это вызвало мою проблему. - (void)drawRect:(NSRect)dirtyRect

Соответствующее сообщение на форуме разработчиков Apple: https://devforums.apple.com/message/1097305#1097305


person Community    schedule 30.01.2015    source источник


Ответы (1)


Я нашел решение. В «- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) изменение объекта: (NSDictionary *) change context: (void *) context;» кнопки добавить "[self setNeedsDisplay:YES];"

Исходное руководство по привязкам какао, действиеObservValueForKeyPath имеет [self setNeedsDisplay: YES]; Но я не помню, почему я это прокомментировал. Когда NSFullSizeContentViewWindowMask не установлен, приложение получает только один фокус.

person Community    schedule 30.01.2015