OS X Yosemite window 样式掩码 NSFullSizeContentViewWindowMask 导致只有单击集合视图的按钮才能调用 drawRect

OS X Yosemite window style mask NSFullSizeContentViewWindowMask cause only clicked button of collection view can call drawRect

我的环境是 OS X Yosemite 10.10.2。 Xcode 是 6.1.1 和 6.2 beta4。 我为 OS X 编写了一个日历应用程序。我使用了我编写的 cocoa 绑定框架。我得到了 一个问题。集合视图中应该只有一个焦点日按钮。但是有些东西 错误的。该应用程序有多个焦点。

我找到了导致此问题的语句。 [[[自视图] window] setStyleMask:([[自视图] window].styleMask | NSFullSizeContentViewWindowMask)]; app设置NSFullSizeContentViewWindowMask时,只有点击的集合按钮 由于性能原因,视图将调用 drawRect。这导致了我的问题。 - (void)drawRect:(NSRect)dirtyRect

苹果开发者论坛相关post:https://devforums.apple.com/message/1097305#1097305

我找到了解决办法。在“- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;”按钮添加“[self setNeedsDisplay:YES ];"

cocoa绑定的原教程,observeValueForKeyPath动作有[self 设置需要显示:是];但我不记得我为什么评论它。什么时候 NSFullSizeContentViewWindowMask 未设置,应用程序只有一个焦点。