gpt4 book ai didi

objective-c - mouseDown COCOA 下的对象

转载 作者:行者123 更新时间:2023-12-03 17:53:26 26 4
gpt4 key购买 nike

我有一个非常简单的问题,但我找不到简单的答案。当使用cocoa(osx,xcode)和一个名为“mouseDown”的方法来检测鼠标是否单击了 View 时,如何检测鼠标单击了哪个对象?我只需要一个类名,这样我就可以知道用户是否点击了,例如 NSImageView、WebView、NSTextView 或 NSView 本身?或者更好的是,如果我的 NSView 上有两个 NSImageView,如何检测单击了哪一个?

干杯。

最佳答案

在 View mouseDown 方法中,您可以调用 hitTest: 方法来获取被单击的 View 层次结构中接收器的最远后代:

因此,在您的 View 子类中,您可以执行以下操作:

- (void)mouseDown:(NSEvent *)theEvent
{
id clickedObject = [self hitTest:[theEvent locationInWindow]];

if ([clickedObject isKindOfClass:[NSImageView class]]) {
NSLog(@"Clicked an ImageView");
} else if ([clickedObject isKindOfClass:[WebView class]]) {
NSLog(@"Clicked a WebView");
}
}

不过,您的问题似乎有点奇怪,因为通常您不需要自己进行 HitTest 。

如果您尝试在单击特定图像时获取单击事件,更好的方法是使用带有图像集的无边框按钮,然后实现操作方法并将其连接到按钮。

关于objective-c - mouseDown COCOA 下的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18178458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com