1

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

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

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

用其他窗口坐标系表示的坐标。

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

4

1 回答 1

2

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],normalizedPositiondeviceSize(请参阅Apple 的文档)。

于 2013-02-18T22:16:34.080 回答