我有一个NSView的子类,它重新实现了许多鼠标事件功能.例如在mouseDown中从NSEvent获取点我使用:
NSEvent *theEvent; // <- argument to function
NSPoint p = [theEvent locationInWindow];
p = [self convertPoint:p fromView:nil];
Run Code Online (Sandbox Code Playgroud)
但是坐标似乎被翻转,(0,0)位于窗口的左下角?
编辑:我已经重写了isFlipped方法以返回TRUE,但它只影响了绘图.对不起,简直不敢相信我忘了把它直接放了.
翻转是什么意思?Mac使用LLO(左下角)坐标系统来处理所有事情.
编辑我无法通过一个简单的项目重现这一点.我创建了一个这样的NSView实现:
@implementation FlipView
- (BOOL)isFlipped {
return YES;
}
- (void)mouseDown:(NSEvent *)theEvent {
NSPoint p = [theEvent locationInWindow];
p = [self convertPoint:p fromView:nil];
NSLog(@"%@", NSStringFromPoint(p));
}
@end
Run Code Online (Sandbox Code Playgroud)
我收到了我期望的坐标.isFlipped按预期移除切换方向.你有一个简单的项目来证明你的问题吗?
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |