在Mac上,可以通过调用[NSEvent mouseLocation]来获取鼠标“在事件流之外”的位置(即,即使您没有订阅mouseUp:et al的任何委托方法).
有没有什么方法可以在iOS上获取当前触摸事件而无需听取touchesBegan:?
我问,因为至少有一种情况没有调用touchesBegan:在app启动时,如果触摸已经在进行中,则touchesBegan永远不会被调用.实际上,也没有任何触摸相关的UIEvent方法被称为接近我所知道的(也不是UIApplication的/ UIWindow的sendEvent:,显然).
我想根据启动时是否正在进行触摸来稍微改变我的应用程序的行为.有没有办法在应用程序启动时检测正在进行的触摸?
解决方法
这是不可能做到的.原因很简单:触摸事件不属于您的应用.每次触摸都属于某个UI元素(或响应者).如您所知,此元素获取已开始,已移动,已结束,已取消的消息.
在正确编程的应用程序中甚至是这样:所有关于一次触摸的事件都被传递到同一个对象.毕竟,另一个对象如何知道如何处理该事件,以及第一个对象应如何正确完成其预期的行为?
虽然你可以(或者可能,但可能不应该)在你的应用程序中找到解决方法,但是没有办法进行跨应用程序触摸传递.
在Mac上,您可以查询鼠标位置,但在正常的应用程序流程中,在您获得鼠标按键事件之前总会有鼠标按下.
老实说,我认为无论如何都不会有任何理由……哦等等……我可以将我的应用程序图标分成几个区域……不确定它是否已经破坏隐私法,但是,如果你可以知道用户在屏幕上的图标位置.