我有一个 NSView[self setAcceptsTouchEvents:YES];
光标离开 NSView 框架后,此方法继续被调用,直到我单击/开始一个新手势,我真的不明白它何时停止。
-(void)touchesMovedWithEvent:(NSEvent *)theEvent {
[self doStuffs:theEvent];
}
用其他窗口坐标系表示的坐标。
有没有办法防止这种情况发生,或者将坐标转换回视图坐标系?
NSRespondertouchesMovedWithEvent
被调用用于在您的视图中开始的触摸事件,直到它们结束(无论是在您自己的视图中还是在其他地方)。
事件位置以窗口坐标表示。转换为视图的坐标系很容易:
- (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
(请参阅Apple 的文档)。