我正在尝试使用setAcceptsTouchEvents:YES
识别触控板上的自定义触控事件。只需触摸触控板,touchesBeganWithEvent
就不会发生任何事情。但如果我在触控板上做捏或滚动的手势,touchesBeganWithEvent
开始正常工作。在其中一个手势之后,即使我只是触摸触控板,touchesBeganWithEvent
也能正常工作。但我需要使用touchesBeganWithEvent
进行简单的触摸,而无需先做手势。它的方式似乎我必须做一个手势来初始化setAcceptsTouchEvents:YES
。我做错了什么?
P.S。:setAcceptsTouchEvents:YES
在initWithFrame
中,我可以看到它在应用程序启动时执行。
答案 0 :(得分:3)
我发现重启macOS后,或者只是注销并再次登录后,此问题就消失了。我试图做任何可能导致问题停止的事情,比如关闭macbook中的所有应用程序,切换桌面,将操作系统置于待机状态然后回来,但唯一能让问题消失的是注销或重新启动操作系统。
所以,当问题消失后,我启动我的应用程序,只需触摸触控板即可调度touchesBeganWithEvent。然后几个小时后问题再次出现,并且touchesBeganWithEvent不再有效,直到我做一个像捏或滚动的手势。如果我关闭我的应用程序并重新开始,我需要再次执行此操作。
有谁知道为什么会这样?
答案 1 :(得分:2)
来自docs:
事件将在关键窗口中触摸下发送到视图。 获取为此视图(或其后代)开始的触摸集 此视图)发送[event touchesMatchingPhase:NSTouchPhaseBegan inView:自]
一些想法: