5

我正在尝试用它setAcceptsTouchEvents:YES来识别触控板上的自定义触摸事件。只需触摸触控板就不会在touchesBeganWithEvent. 但是如果我在触控板上做一个手势,比如捏或滚动touchesBeganWithEvent开始就可以正常工作。在其中一个手势之后,即使我只是触摸触控板也能touchesBeganWithEvent正常工作。但我需要使用touchesBeganWithEvent简单的触摸而不需要做手势。它的方式似乎我必须做一个手势来初始化setAcceptsTouchEvents:YES. 我究竟做错了什么?

PS:setAcceptsTouchEvents:YESinitWithFrame里面,可以看到是在应用启动的时候执行的。

4

2 回答 2

3

我发现这个问题在重新启动 macOS 后消失了,或者在注销并再次登录后消失了。我尝试做任何其他可能使问题停止的事情,例如关闭 macbook 中的所有应用程序,切换桌面,将操作系统置于待机状态然后回来,但唯一使问题消失的是注销或重新启动操作系统。

所以,当问题消失时,我启动我的应用程序并简单地触摸触控板,touchesBeganWithEvent 被调度。然后几个小时后问题再次出现,并且 touchesBeganWithEvent 不再起作用,直到我做一个像捏或滚动这样的手势。如果我关闭我的应用程序并重新开始,我需要再次做手势。

有谁知道为什么会这样?

于 2012-09-01T15:57:31.323 回答
2

文档

该事件将被发送到按键窗口中触摸下的视图。要获取为此视图(或此视图的后代)开始的触摸集,请发送 [event touchesMatchingPhase:NSTouchPhaseBegan inView:self]。

一些想法:

  1. 确保没有拦截触摸事件的后代视图。
  2. 在执行触摸事件之前尝试以编程方式使您的窗口成为关键窗口,看看这是否会调用 touchesBeganWithEvent。
于 2012-10-22T14:07:01.127 回答