首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击事件被路由到错误的视图

单击事件被路由到错误的视图
EN

Stack Overflow用户
提问于 2013-02-21 14:41:14
回答 1查看 47关注 0票数 0

我有一个包含两个视图的窗口:

出于不同的目的,影片视图和控制器视图都会覆盖mouseDown:mouseUp: (影片视图具有目标和动作,并作为按钮进行反应,而控制器查找并支持拖动)。

不同之处在于,当我在电影视图中单击时--如截图所示,电影视图通常足够大,以至于看不到它,而不是击中控制器视图-- mouseDown:mouseUp:消息被发送到控制器视图!电影视图永远不会收到这两条消息。

我没有在电影视图或它的父视图(这是一个普通的NSView)中重写hitTest:,只是在控制器视图中重写(原因是我在该视图上有一个跟踪区域-我的实现只是返回self,它是控制器视图)。

那么,这是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2013-02-21 14:41:14

您可能已经猜到了:这是我在控制器视图中的hitTest:实现。

事实证明,hitTest:不仅被发送到鼠标所在的框架所在的视图;它还被发送到窗口中的每个视图,甚至是在鼠标单击的两端都不在鼠标附近的视图。

因此,在覆盖hitTest:时,请确保您验证了该点实际上就在您自己内部。最简单的方法是发送[super hitTest:thePoint],如果结果不是nil,则只执行自定义的命中测试。(除非您想从窗口中的其他视图窃取单击。)

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

https://stackoverflow.com/questions/14996098

复制
相关文章

相似问题

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