重新定位NSWindowButton:trackingAreas不正确/未更新,除非窗口调整大小

时间:2016-03-28 22:34:00

标签: objective-c macos cocoa nswindow

我尝试使用以下代码重新定位NSWindowCloseButton s(NSButton *closeButton = [window standardWindowButton:NSWindowCloseButton]; [closeButton setFrame:newFrame]; [closeButton removeFromSuperview]; [window.contentView addSubview:closeButton]; 等,又称" 交通灯"): / p>

[closeButton updateTrackingAreas]

重新定位没有问题。但是,只要窗口完成加载(成为键),跟踪区域仍然处于其旧位置(这些按钮所在的位置)。调整窗口大小后,跟踪区域似乎更新为正确的(当前)位置。

我已尝试NSView之类的内容,但根据this answer,它无论如何都不会起作用。

在没有子类NSWindow / NSWindowDelegate的情况下,是否有更直接/更正确的方法来解决此问题?

更新

这是我目前用来修复"问题:(通过- (void)windowDidBecomeMain:(NSNotification *)notification { NSRect frame = [self.window frame]; frame.size = NSMakeSize(frame.size.width, frame.size.height+1.f); [self.window setFrame:frame display:NO animate:NO]; frame.size = NSMakeSize(frame.size.width, frame.size.height-1.f); [self.window setFrame:frame display:NO animate:YES]; }

class User {
    var id: Int!
    init?(data: JSON) {
        guard let id = Int(data["id"]) else {
            return nil
        }

        self.id = id
    }
}

然后调整窗口大小而不刷新实际帧,强制更新跟踪区域。

0 个答案:

没有答案