2010-08-19 54 views
4

我有一個UIButton和一個UIView。視圖位於按鈕上方,並且大於按鈕的大小。視圖本身就是我想要接受的觸摸事件,並且我想將它們轉發給按鈕,以便在觸摸時發生所有正常的按鈕視覺變化。如何從其他UIView將觸摸轉發到UIButton?

我似乎無法做到這一點 - 我的UIView實現了touchesBegan/Moved/Ended/Canceled,並且在相同的參數上調用相同的方法。但該按鈕不響應。

我確保觸摸方法實際上是在UIView上調用的。

有沒有什麼明顯的我在這裏失蹤,或者獲得控制信息的更好方法?還是有一個很好的理由,爲什麼這不應該工作?

謝謝!

[注:我沒有尋找視圖+按鈕設計的解決方法。我們假設這是一個要求。我感興趣的是其他控件的觸控代理的控件概念。謝謝。]

回答

8

創建一個ContainerView,其中包含一個按鈕並覆蓋hitTest:withEvent:,以便它返回UIButton實例。

+0

輝煌,謝謝。 – 2010-08-19 22:56:40

+0

這個答案很了不起,它是解決UIKit許多問題的入口。通過重寫hitTest,你可以得到任何對任何事件作出反應的東西。非常神奇。謝謝+1! – 2012-11-08 22:45:06

0

你確定你的方法被調用?如果你還沒有設置userInteractionEnabled = YES,那麼它將不起作用。

雖然之前我用​​過這種觸摸轉發沒有問題,但我不知道爲什麼你會看到你遇到的問題。

+0

是的,這些方法正在按預期方式調用。除了touch *之外,你還轉發了其他消息嗎? UIButton的轉發目標是什麼?或者是其他東西?謝謝。 – 2010-08-19 19:41:58

+0

這不是一個UIButton;我認爲這是「長期接觸」的認可。但是我至少寫了兩遍,所以我可能會忘記一些東西。 – 2010-08-20 16:28:43