2012-04-14 42 views
3

我創建了很多Views和Buttons,然後我用圖形創建了ISwipeGestureRecognizer。併爲識別器「引用Outlet集合」增加了很多觀點。我的所有觀點都適用於滑動手勢。這怎麼可能?故事板會爲每個連接的UIView自動創建不同的SwipeRecognizer?故事板中的UIGestureRecognizer可以使用多個視圖?

我不能以編程方式添加更多的意見,爲什麼呢?

回答

2

我從來沒有嘗試過用Storyboard描述過的東西,所以我無法直接回答,但是我可以建議一種方法來驗證是否創建了多個手勢識別器:在您的手勢動作方法中,添加一條NSLog語句來記錄地址的識別器(這是傳遞給操作方法的第一個參數)。這樣,您將驗證是否重複使用相同的識別器。

此外,請記錄recognizer.view屬性以查看引擎蓋下發生了什麼。如果對所有情況得到相同的結果,則可以樂觀地推斷UISwipeRecognizer未在內部使用它的view屬性用於任何事情,並且該信息僅存儲在您的操作回調中以便能夠訪問它。

什麼將是一個謎是,你只有一個手勢識別器和view屬性不同的值。這意味着財產價值會隨時改變,但我無法解釋如何。

+0

我剛試過這個解決方案。真的,有多個識別器而不是單個識別器。感謝你。 – k06a 2012-04-26 20:15:11

+0

不客氣!我不知道故事板的這個功能;很高興知道... – sergio 2012-04-26 20:19:24

0

無論是在代碼中,還是使用界面構建器,您都可以根據需要添加一個手勢識別器。要執行此操作,請使用UIViewaddGestureRecognizer:方法。請注意,您將識別器添加到視圖中,而不是相反。

+0

你可能想嘗試一下。識別器有一個'view'屬性是有原因的,就像視圖具有'superview'屬性一樣(注意這些單詞不是複數形式?)。 – 2012-04-15 01:44:36

2

您可以將手勢識別器連接到Interface Builder中的多個視圖。他們會在接觸時發送正確的消息。但是,使用識別器的視圖屬性無法檢測到哪個視圖被觸摸。無論被觸摸的視圖如何,它都會始終指向相同的視圖。

我不相信你可以用代碼做同樣的事情。是的,這很奇怪。

所以只要你不關心哪個視圖觸發觸摸,你都很好。

相關問題