首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从-mouseDown:event获得有用的位置

无法从-mouseDown:event获得有用的位置
EN

Stack Overflow用户
提问于 2011-01-01 17:07:18
回答 1查看 1.3K关注 0票数 0

完全重写

我现在复制了我以前在一个小样本项目中发布的问题,所以我完全不知道我可能做错了什么。这就是我现在要做的。

document-based)

  • Add

  • 创建了一个新的普通Cocoa应用程序(没有核心数据,而不是,一个名为" MyImageView.m“的类,没有标题
  1. 将MyImageView.m的内容替换为:

@ MyImageView :NSImageView {} @end @implementation MyImageView -(MouseDown):(NSEvent*)事件{ NSLog( @“鼠标向下事件:%@",事件);NSPoint point = event locationInWindow;NSLog( @"mouseDown location:(%d,%d)",point.x,point.y );} @end

  • Open MainMenu.xib in Interface Builder

  • 将图像拖到您的

类上,将其类拖到MyImageView

  • Save everything,然后运行

  • ,单击图像Well

上的任意位置

然后,我在控制台上看到下面的消息:

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却是如此明显的错误?我能做什么会导致如此琐碎的代码是错误的?

我已经重新启动了我的系统,以防有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-01 20:07:45

NSPoint的两个元素是浮点数,所以是您的NSLog语句错了,而不是返回的值。您需要确保格式字符串中的类型与变量的类型相匹配,通过强制转换可以这样做:

这将起作用:

代码语言:javascript
复制
NSLog( @"mouseDown location: (%d,%d)", (int) point.x, (int) point.y );

这一点也是如此:

代码语言:javascript
复制
NSLog( @"mouseDown location: (%f,%f)", (float) point.x, (float) point.y );

NSPoint包含32位浮点还是64位浮点在操作系统版本和系统之间有所不同.可能值得使用内置的点对点到字符串函数:

代码语言:javascript
复制
NSLog( @"mouseDown location: %@", NSStringFromPoint(point) );

(请注意,在实际进行数学和比较时,不需要插入转换就可以自动工作。只有NSLog才需要帮助才能做到这一点。)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4574828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档