【问题标题】:NSWindow doesn't respond until clickNSWindow 在单击之前没有响应
【发布时间】:2012-11-08 06:15:04
【问题描述】:

我有一个图像编辑器窗口。拖动事件后,我将窗口最小化为左下角的缩影,然后在缩影上放回窗口。在微型图上方,我将光标更改为operationNotAllowedCursor

问题是:NSWindow 在第一个 draggingEntered 之后没有改变微型光标上的光标(在第二个之后,一切都很好)。此外,在放置微型 NSWindow 后,在单击它的任何区域之前不会收到任何事件。

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

-(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];
}

【问题讨论】:

    标签: objective-c cocoa drag-and-drop nswindow


    【解决方案1】:

    经过大量变体后,我找到了答案。看起来像拖动源一样的区域必须只是NSView,而不是我拥有的NSButton的子类。

    我重写了 Dragging Source 类 - 现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2017-12-05
      • 2021-12-02
      相关资源
      最近更新 更多