2010-11-26 12 views
0

我有很多小的UIButtons和一個涵蓋所有的大型。 小UIButtons應該都對UIControlEventTouchDownRepeat作出反應並調用選擇器。大UIButton只需要對UIControlEventTouchDragInside做出反應。然而,大的UIButton消耗所有觸摸,並且UIControlEventTouchDownRepeat事件沒有到達下面的小按鈕。我該如何解決這個問題?如何傳輸UIEvent到以下UIResponders

回答

0

如果大UIButton被覆蓋的小按鈕比簡單的答案是,你不能。事件傳遞給響應者鏈,當涉及到視圖時,除非事件被處理,否則事件會傳遞給它的超級視圖。由於一個視圖只能有一個一個 superview你想做什麼是不可能的,至少不容易。

如果你可以反向佈局,有對的大按鈕它可以工作的頂部所有的小按鈕。我不確定這些事件是否會按照您的意願行事,您只需要對其進行測試。但是所有不是由小按鈕處理的事件都應該傳遞給大按鈕。

如果您可以捕獲觸摸點UIControlEventTouchDownRepeat,那麼您應該能夠找到觸摸下方的哪個小按鈕,並以此方式傳遞事件。您將不得不要求超級查看小按鈕,這可能與大按鈕的超級查看相同,用於觸摸座標處的視圖以及對該視圖做些什麼。

也許你會想看看另一種解決方案,也許創造你想要一個處理觸摸自定義控件。

+0

謝謝羅伯特。我會嘗試顛倒佈局,只是將任何不同於UIControlEventTouchDownRepeat的事件傳遞給下一個視圖並返回反饋。關於自定義控件,你的意思是在所有內容上設置一個UIResponder,並讓它採取所有必要的操作? – pierre 2010-12-20 09:55:44