2012-03-07 72 views
4

我試圖使用我在Storyboard中創建的UIView作爲按鈕。我認爲可以使用UIButton,將類型設置爲自定義。不過,我無法將子視圖添加到Storyboard中的自定義UIButton。使用UIView作爲按鈕

因此我剛剛度過的最後一個小時通過使自己的自定義手勢recoginizers重新實現按鈕的功能重新發明輪子。

這肯定不是,雖然做的最好的辦法,所以我的問題 - 對有經驗的iOS開發比我 - 是什麼使一個自定義按鈕的最好方法?

要清楚它需要:

  • 使用我創建,因爲它是hittable區域UIView的。
  • 能夠顯示根據是否當前高亮顯示或不 一個 不同狀態(即觸摸向下)。
  • 實際點擊時執行一些操作。

謝謝你的幫助。

回答

1

您可以使用一個UIButton,將類型設置爲自定義,然後編程添加子視圖...

+0

所以要有一個自定義按鈕,我基本上必須以編程方式製作一切,而不是使用Storyboard? – 2012-03-07 23:55:08

+0

Nop,您可以在故事板上創建它,然後以編程方式添加您的視圖(例如從界面構建器)。 – fbernardo 2012-03-07 23:56:23

0

子類UIControl代替。您可以添加子視圖到它,它可以採取行動

+0

謝謝,我正在調查它。 – 2012-03-08 00:02:15

0

爲什麼你實現自己的GestureRecognizer應對?我建議使用UIView,以便您可以在界面構建器中添加子視圖並添加UITapGestureRecognizer。你甚至可以用圖形來做,因爲你不關心IOS4的支持。

+0

我在使用UITapGestureRecognizer時遇到的問題是,它沒有提供任何方式在觸摸時突出顯示UIView。否則,它會是完美的(並且比任何其他解決方案都要簡單得多)。 – 2012-03-08 00:03:39

0

更改您的UIView成UIControl在故事板。然後使用方法
[controlViewName addTarget:self action:@selector(*click handler method*) forControlEvents:UIControlEventTouchDown];單擊處理程序方法是您的處理程序的方法名稱的佔位符。使用此方法,只需更改UIControlEventTouchDown,UIControlEventTouchInsideUIControlEventTouchDragExit即可在用戶完成點擊並將其手指分別拖出視圖時調用方法。我用它來做我現在正在做的事情,而且效果很好。

接觸下來,你會想:突出顯示所有子視圖
聯繫起來裏面,你會想:unhighlight所有子視圖和執行賽格瑞或做任何的按鈕應該做的事
在觸摸拖動退出你會想於:unhighlight所有子視圖

this similiar由李成第二個答案SO發佈。