【问题标题】:No MouseUp:/Down: on custom view in NSSplitView on LeopardNo MouseUp:/Down: 在 Leopard 上的 NSSplitView 中的自定义视图上
【发布时间】:2010-08-11 22:12:53
【问题描述】:

我目前正在为 OSX 10.5 及更高版本构建项目。 首先,10.6的用户看不到这个;只有 10.5 个用户有这个问题。 您无法在 10.6 上重现此内容。

简而言之:当使用 - (void)mouseUp:(NSEvent *)theEvent 的重载实现放置 NSView 的自定义扩展类时,mouseUp 在包裹在 NSSplitView 中时不会被调用。 rightMouseUp:/Down: 可以在扩展的 NSView 上工作。

当我将自定义视图放在我的窗口上时会调用该事件,当我将它直接包装在 nssplitview 中时,不会为豹 (10.5) 用户调用 mouseup。

重现步骤(在 10.5 上!)

  1. 创建一个新的可可项目
  2. 创建以下类
  3. 在窗口上拖动一个自定义视图并创建类 GTTest
  4. 在窗口上拖动一个拆分视图,然后在其中一个内容视图中添加一个 GTTest

类:

@interface GTTest : NSView {
}

#import "GTTest.h"
@implementation GTTest

- (void)mouseUp:(NSEvent *)theEvent {
 NSLog(@"Ger");
}

单击窗口上的 GTTest 直接记录好行,单击 NSSplitView 没有任何作用(也尝试断点)。 rightMouseDown:/Up: 在 NSView 上工作。

ps> 当我向 splitview 添加一个按钮时(也是一个派生的 nsview,使用 nsresponder 对吗?)会触发我的 IBAction 方法吗?我上面的课程缺少什么才能正常工作?

我能做什么?

【问题讨论】:

    标签: cocoa nsview osx-leopard nssplitview


    【解决方案1】:

    好的,我找到了解决方法:

    实现 NSSplitView 的扩展类并覆盖方法并“冒泡”事件,如果拆分器悬停(可通过光标检测)并且不执行任何操作。这不会导致自定义视图接收到事件。

    - (void)mouseUp:(NSEvent *)theEvent {
        if ([NSCursor currentCursor]==[NSCursor resizeLeftCursor] 
            || [NSCursor currentCursor]==[NSCursor resizeRightCursor]
            || [NSCursor currentCursor]==[NSCursor resizeLeftRightCursor]) {
            [super mouseUp:theEvent];
        } 
    
        if ([NSCursor currentCursor]==[NSCursor resizeUpCursor] 
            || [NSCursor currentCursor]==[NSCursor resizeDownCursor]
            || [NSCursor currentCursor]==[NSCursor resizeUpDownCursor])
        {
            [super mouseUp:theEvent];
        }
    }
    

    并使用该类作为拆分视图;突然事件被接收到自定义 NSViews。 奇怪但真实!

    【讨论】:

      【解决方案2】:

      我不知道为什么 10.5 和 10.6 在这方面会有所不同,但您可以尝试覆盖 mouseDownCanMoveWindow 以返回 NO,如以下问题所示:

      mouse click events in an NSView subclass

      【讨论】:

      • 感谢您的回答,但这不相关,但我还是尝试了。可悲的是它不起作用。 10.5 的 nssplitview 存在问题。如果我能以某种方式解决它。
      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 2011-12-24
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多