完全重写
我现在复制了我以前在一个小样本项目中发布的问题,所以我完全不知道我可能做错了什么。这就是我现在要做的。
document-based)
@ MyImageView :NSImageView {} @end @implementation MyImageView -(MouseDown):(NSEvent*)事件{ NSLog( @“鼠标向下事件:%@",事件);NSPoint point = event locationInWindow;NSLog( @"mouseDown location:(%d,%d)",point.x,point.y );} @end
类上,将其类拖到MyImageView
上的任意位置
然后,我在控制台上看到下面的消息:
2011-01-01 13:58:12.351 TestApp[1167:903] mouse down event: NSEvent: type=LMouseDown loc=(237,242) time=2033.7 flags=0x100 win=0x0 winNum=573 ctxt=0x0 evNum=286 click=1 buttonNumber=0 pressure=1
2011-01-01 13:58:12.353 TestApp[1167:903] mouseDown location: (-2057547688,16)
为什么NSEvent的字符串表示中的"loc“是正确的,但-locationInWindow却是如此明显的错误?我能做什么会导致如此琐碎的代码是错误的?
我已经重新启动了我的系统,以防有帮助。
发布于 2011-01-01 20:07:45
NSPoint的两个元素是浮点数,所以是您的NSLog语句错了,而不是返回的值。您需要确保格式字符串中的类型与变量的类型相匹配,通过强制转换可以这样做:
这将起作用:
NSLog( @"mouseDown location: (%d,%d)", (int) point.x, (int) point.y );这一点也是如此:
NSLog( @"mouseDown location: (%f,%f)", (float) point.x, (float) point.y );NSPoint包含32位浮点还是64位浮点在操作系统版本和系统之间有所不同.可能值得使用内置的点对点到字符串函数:
NSLog( @"mouseDown location: %@", NSStringFromPoint(point) );(请注意,在实际进行数学和比较时,不需要插入转换就可以自动工作。只有NSLog才需要帮助才能做到这一点。)
https://stackoverflow.com/questions/4574828
复制相似问题