gpt4 book ai didi

macos - 为什么 NSView 在光标离开框架后继续接收触摸事件?

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

我有一个 NSView 与 [self setAcceptsTouchEvents:YES];

光标离开 NSView 框架后,这个方法会继续被调用,直到我单击/开始一个新的手势,我不太明白它什么时候停止。

-(void)touchesMovedWithEvent:(NSEvent *)theEvent {
[self doStuffs:theEvent];
}

使用其他 Windows 坐标系表示的坐标。

有没有办法防止这种情况,或者将坐标转换回 View 坐标系?

最佳答案

NSResponder 的 touchesMovedWithEvent 会在您的 View 中开始的触摸事件被调用,直到它们结束(无论是在您自己的 View 中还是其他地方)。

事件位置以窗口坐标表示。转换到 View 的坐标系很容易:

- (void)touchesMovedWithEvent:(NSEvent *)event
{
NSPoint locInWindow;
NSPoint locInView;

locInWindow = [event locationInWindow];
locInView = [self convertPoint:locInWindow fromView:nil];

NSLog(@"Location in window: %@", NSStringFromPoint(locInWindow));
NSLog(@"Location in view: %@", NSStringFromPoint(locInView));
}

如果您想处理自己的多点触控手势的原始触摸,这可能还不够。您需要使用 [event attemptsMatchingPhase:NSTouchPhaseMoved inView:self]normalizedPositiondeviceSize 等(请参阅 Apple's documentation )。

关于macos - 为什么 NSView 在光标离开框架后继续接收触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14943809/

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