2011-08-09 81 views
1

Objective-C的Objective-C中如何檢測的多點觸控是來自許多子視圖

假設我有一個有三個子視圖A,B和C

A是滾動視圖主視圖名稱。 B和C都是圖像視圖。

我需要檢測主視圖上的多點觸控。例如,如果您使用兩根手指觸摸屏幕,則會顯示警告框。

如果兩根手指在相同的子視圖上觸摸,則會OK。

但是,如果一個手指在視圖B處觸摸並且在視圖C處觸摸另一個,則會出現問題,因爲主視圖接收到2個順序觸摸而不是多點觸摸。

我想知道這個問題是否有解決方案?

謝謝你的每一個答案。

回答

1

你可以做到這一點 -

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(multiTap:)]; 
[tap setNumberOfTapsRequired:1]; 
[tap setNumberOfTouchesRequired:1]; 
[self.yourView addGestureRecognizer:tap]; 
[tap release]; 

您可以實現multiTap它處理此事件。但是,從目前來看,你試圖做的事可能會讓用戶感到困惑。無論如何,這是你的電話。從技術上講,這是可能的...

+0

這是一個視圖的輕拍手勢識別器。如果我點擊2個子視圖,我怎麼能知道。 – Pongpat

+0

也爲該視圖添加處理程序...如果你有一個瘋狂的視圖數量,那麼你可能想重新考慮你的方法 –

+0

是的,你可以爲許多子視圖添加手勢識別器,但它仍然發送連續的單點觸摸事件而不是多點觸摸事件 – Pongpat

0

理論上,探索的一個可能的解決方案是首先添加一個透明的玻璃視圖,作爲主視圖的子視圖,所以它將是視圖A,B,C那會得到所有的水龍頭。附加一個UITapGestureRecognizer並在所有子視圖上設置一個UIGestureRecognizerDelegate,以同時使用方法shouldRecognizeSimultaneouslyWithGestureRecognizer同時排除視圖D和A中手勢的識別。

實際上,imho最佳解決方案根本不是要面對這個問題,而是試圖識別可能落在不同子視圖上的多指點按,因爲它不會相互碰撞,所以要去縮放識別(UIPinchGestureRecognizer)與常規的UITapGestureRecognizers,你不會有這個問題。