Cocoa 无鼠标悬停:/Down:在Leopard上的NSSplitView中的自定义视图上
我目前正在为OSX 10.5及更高版本开发一个项目。 首先,10.6用户没有看到这一点;只有10.5个用户存在此问题。 您无法在10.6上复制此内容 简言之:当使用-(void)mouseUp:(NSEvent*)重载实现放置NSView的自定义扩展类时,当mouseUp包装在NSSplitView中时,不会调用该事件。rightMouseUp:/Down:在扩展NSView上工作 当我将自定义视图放在窗口上时,会调用该事件;当我将其直接包装在nssplitview中时,leopard(10.5)用户不会调用mouseup 复制步骤(在10.5上!)Cocoa 无鼠标悬停:/Down:在Leopard上的NSSplitView中的自定义视图上,cocoa,nsview,osx-leopard,nssplitview,Cocoa,Nsview,Osx Leopard,Nssplitview,我目前正在为OSX 10.5及更高版本开发一个项目。 首先,10.6用户没有看到这一点;只有10.5个用户存在此问题。 您无法在10.6上复制此内容 简言之:当使用-(void)mouseUp:(NSEvent*)重载实现放置NSView的自定义扩展类时,当mouseUp包装在NSSplitView中时,不会调用该事件。rightMouseUp:/Down:在扩展NSView上工作 当我将自定义视图放在窗口上时,会调用该事件;当我将其直接包装在nssplitview中时,leopard(10.5
@interface GTTest : NSView {
}
#import "GTTest.h"
@implementation GTTest
- (void)mouseUp:(NSEvent *)theEvent {
NSLog(@"Ger");
}
单击窗口上的GTTest direclty记录好的行,单击NSSplitView one不做任何事情(也尝试一个断点)。rightMouseDown:/Up:在NSView上工作
ps>当我向splitview(也是派生的nsview,nsresponder对吗?)添加一个按钮时,会触发我的iAction方法;我上面的课缺了什么也做对了
我能做什么?我不知道为什么10.5和10.6在这方面会有所不同,但您可以尝试覆盖
mouseDownCanMoveWindow
以返回NO,如以下问题所示:
我不知道为什么10.5和10.6在这方面会有所不同,但您可以尝试覆盖
mouseDownCanMoveWindow
以返回NO,如以下问题所示:
好的,我找到了一个解决方案: 实现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];
}
}
并将该类用作splitview;突然,事件被接收到自定义NSView。
奇怪但真实 好的,我找到了一个解决方案: 实现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];
}
}
并将该类用作splitview;突然,事件被接收到自定义NSView。
奇怪但真实 谢谢你的回答,但是没有关系,但我还是试过了。它不起作用。10.5的nssplitview上有一个问题。如果我能以某种方式解决这个问题就好了。谢谢你的回答,但这没有关系,但我还是试过了。它不起作用。10.5的nssplitview上有一个问题。如果我能以某种方式解决它就好了。