gpt4 book ai didi

objective-c - NSRect 的鼠标事件

转载 作者:行者123 更新时间:2023-12-03 16:58:40 29 4
gpt4 key购买 nike

我有一个 NSEvent 并想检测何时单击一个矩形,所以这是我的代码:

- (void)mouseDown:(NSEvent *)event;
{
NSPoint clickedPoint = [event locationInWindow];
//perform code for clickedPoint
}

如何不使用 locationInWindow 将矩形或 View 转换为 NSPoint,以便它检查我是否单击了该矩形?谢谢!

最佳答案

首先,考虑您是否真的想要覆盖 mouseDown: 或者覆盖 mouseUp: 是否是更好的选择。如果此单击类似于单击按钮,则通常最好重写 mouseUp: 而不是 mouseDown:,如 mouseUp:将允许用户通过在放开鼠标之前将鼠标拖出按钮的矩形来“改变主意”。

NSEventlocationInWindow 给出了事件在基本窗口坐标中的位置。要将该位置转换为 View 的本地坐标系,您可以使用 NSView 的 convertPoint:fromView:就像下面这样:

- (void)mouseDown:(NSEvent *)event {
NSPoint eventLocation = [event locationInWindow];
NSPoint location = [self convertPoint:eventLocation fromView:nil];
// handle the logic of what to do given the point
}

参见Cocoa Event-Handling Guide: Getting the Location of an Event了解更多信息。

关于objective-c - NSRect 的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059677/

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