2010-09-29 103 views
0

我一直在使用觸摸開始追蹤多達8個觸摸,並且每個觸發一個事件。這些觸摸可以同時發生,或交錯。XCode - touchBegan - 最近觸摸/新觸摸

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touch Began"); 
    NSSet *allTouches = [event allTouches]; 

    for (int i=0; i<allTouches.count; i++) { 
     UITouch *touch = [[allTouches allObjects] objectAtIndex:i]; 
     if (/*touch inside button in question*/) { 
      //Trigger the event.  
     } 
    } 
} 

該代碼工作的多點觸控,它有沒有問題,除非:(看你能不能猜)

由於道路allTouches作品,它確實得到所有的觸摸。因此,當用戶開始另一次觸摸時,它循環顯示當前活動的所有觸摸,從而觸發其中一個按鈕的事件兩次。

例如:Johnny正在按下按鈕1.發生事件1。 Johnny將他的手指放在按鈕1上,然後按下按鈕2.發生事件2,但按鈕1仍然是所有觸摸的一部分,因此事件1再次觸發。

所以,這裏的問題是:我如何獲得新的觸摸?

回答

0

在隨後調用touchesBegan以進行任何連續觸摸時,將返回相同的觸摸對象。因此,只需保存已經處理的每個UITouch *觸摸(已經開始處理(尚未結束)),並且在下一次迭代觸摸時重複,跳過已保存/標記的那些觸摸。

+0

Perfet!非常感謝! – 2010-09-29 23:53:10