Macos 为什么NSView在光标离开其框架后继续接收触摸事件?
我有一个带有Macos 为什么NSView在光标离开其框架后继续接收触摸事件?,macos,cocoa,Macos,Cocoa,我有一个带有[self-setAcceptsTouchEvents:YES]的NSView 光标离开NSView框架后,此方法将继续被调用,直到我单击/开始一个新手势,我才真正理解它何时停止 -(void)touchesMovedWithEvent:(NSEvent *)theEvent { [self doStuffs:theEvent]; } 使用其他windows坐标系表示的坐标 有没有办法防止这种情况发生,或者将坐标转换回视图坐标系?NSResponder的touchsmove
[self-setAcceptsTouchEvents:YES]的NSView代码>
光标离开NSView框架后,此方法将继续被调用,直到我单击/开始一个新手势,我才真正理解它何时停止
-(void)touchesMovedWithEvent:(NSEvent *)theEvent {
[self doStuffs:theEvent];
}
使用其他windows坐标系表示的坐标
有没有办法防止这种情况发生,或者将坐标转换回视图坐标系?NSResponder的touchsmovedwithevent
用于在视图中开始直到结束的触摸事件(无论是在您自己的视图中还是在其他位置)
事件位置以窗口坐标表示。转换到视图的坐标系很容易:
- (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 touchesMatchingPhase:NSTouchPhaseMoved inView:self]
、normalizedPosition
、deviceSize
等(请参阅)。NSEvent是否包含指向生成事件的窗口的指针?所有非周期性事件都包含指向与事件相关联的窗口的指针([NSEvent window])。如果要检查当前事件的位置是否在窗口(或视图)的内部或外部,可以将NSPointInRect()与事件的位置一起使用。我实际上指的是NSView而不是window,但窗口指针肯定足够了。