我有一个恼人的问题。我有一个子类UIViewController,并使用通常的-(void)touchesBegan
和-(void)touchesMoved
...方法检查触摸事件。无论我尝试什么,它们只被要求第一次接触,其他被完全忽略。我知道这个问题已在这里解决了:
然而,那里的解决方案对我没用。我已在每个视图上将multipleTouchEnabled
设置为YES
,并在每个子视图上将userInteractionEnabled
设置为NO
,但我将子视图上的视图控制器上的主视图设置为。{/ p >
答案 0 :(得分:1)
我认为这个问题仅仅是了解touches
事件的工作方式。
触摸是手指,手指是触摸。触摸具有视图 - 触摸最初发生的视图 - 这是其生命周期的剩余视图。手指的行为将作为一系列触摸事件发送到该视图。
现在,假装您只有一个视图,并且在该视图中实现了touches
个事件。然后,屏幕上的每个手指将一次调用touchesBegan
。但是当手指2下降时,如果屏幕上的手指1已经已经已经,那么显然手指1现在没有开始;那已经发生了。因此,对touchesBegan
的此调用将在其touches
设置中仅包含指针2,因为这是刚刚开始的手指。如果Finger 1仍处于关闭状态,则会在事件的触摸中进行二次报告,但这不是其触摸事件,因此它不会在{{1设置。
答案 1 :(得分:-1)
感谢@matt的想法。我在一个空项目上尝试过,方法仍然只调用一次。然后我检查了touches
数组,也许它被多次触摸调用一次(我在模拟器上)。然后我检查了event.allTouches
,瞧,有两次接触。愚蠢的我在模拟器上尝试这个,但也愚蠢的苹果调用touchesBegan
一次,touches
数组只包含一个元素。