Objective c NSWindow不';单击后才能响应

Objective c NSWindow不';单击后才能响应,objective-c,cocoa,drag-and-drop,nswindow,Objective C,Cocoa,Drag And Drop,Nswindow,我有一个图像编辑器窗口。在拖动事件后,我将窗口最小化为左下角的缩影,在放置缩影后,我将窗口返回。在缩影上方,我将光标更改为操作不允许的光标 问题是:NSWindow在第一次拖动后(在第二次或更多次拖动后,一切正常)不会更改缩微图上的光标。此外,在点击窗口的任何区域之前,该窗口不会收到任何事件 最小化窗口的代码(在NSWindow子类中): -(无效)最小化 { 常数双迷你=240; msdraggingminimal*mini=[[msdraggingminimal alloc]

我有一个图像编辑器窗口。在拖动事件后,我将窗口最小化为左下角的缩影,在放置缩影后,我将窗口返回。在缩影上方,我将光标更改为
操作不允许的光标

问题是:
NSWindow
在第一次拖动后(在第二次或更多次拖动后,一切正常)不会更改缩微图上的光标。此外,在点击窗口的任何区域之前,该窗口不会收到任何事件

最小化窗口的代码(在NSWindow子类中):

-(无效)最小化
{        
常数双迷你=240;
msdraggingminimal*mini=[[msdraggingminimal alloc]init];
[迷你设置迷你图像:[[MSScreenMaker getInstance]makeEditorScreen:(int)[self windowNumber]];
_mainContentView=self.contentView;
_oldFrame=[自帧];
[自设置样式掩码:NSBorderlessWindowMask];
self.contentView=mini;
NSRect drect=[[self screen]帧];
双宽、双高;
if(self.frame.size.width
经过大量的变异,我找到了答案。似乎该区域就像拖动源代码一样,必须是
NSView
,而不是我所拥有的
NSButton
的子类

我重写了我的拖动源代码类-现在一切正常

-(void)minimize
{        
    const double miniSize = 240;
    MSDraggingMiniature *mini = [[MSDraggingMiniature alloc] init];
    [mini setMiniImage:[[MSScreenMaker getInstance] makeEditorScreen:(int)[self windowNumber]]];

    _mainContentView = self.contentView;
    _oldFrame = [self frame];
    [self setStyleMask:NSBorderlessWindowMask];
    self.contentView = mini;
    NSRect drect = [[self screen] frame];
    double width, height;
    if (self.frame.size.width < self.frame.size.height) {
        height = miniSize;
        width = self.frame.size.width / self.frame.size.height * miniSize;
    } else {
        width = miniSize;
        height = self.frame.size.height / self.frame.size.width * miniSize;
    }
    _anima = MSEditorResizeAnimationMinimize;
    [self setFrame:NSMakeRect(drect.origin.x + 20, drect.origin.y + 20 , width, height) display:YES animate:YES];
}
-(void)deminimize
{
    self.contentView = _mainContentView;
    [self setStyleMask:NSTitledWindowMask];
    _anima = MSEditorResizeAnimationDeminimize;
    [self setFrame:_oldFrame display:YES animate:YES];

    [self makeKeyWindow];
    [self makeMainWindow];
}