2013-05-03 54 views
6

我有一個UICollectionView,其中每個UICollectionViewCell都有一個UIButton作爲子視圖。 UIButtons響應點擊沒有問題(它們的目標被觸發),但是按鈕本身不會改變到選定狀態(按鈕的外觀和感覺沒有變化)。我有一個預感,這是因爲UICollectionViewCell沒有正確地將其觸摸事件轉發給按鈕,但我不確定。即使這樣,在這種情況下,我該如何設置,以便按鈕的狀態正確變化?UICollectionViewCell中的UIButton子視圖不改變控制狀態

回答

12

UIScrollview(因此UICollectionView太)有一個名爲delaysContentTouches屬性,默認情況下它被設置爲YES ,這種改變NO和你的按鈕應突出像它應該。

+0

美麗!完美工作。爲了好奇,下面是該屬性的相關文檔:一個布爾值,用於確定滾動視圖是否延遲觸摸手勢的處理。 如果此屬性的值爲YES,那麼滾動視圖會延遲處理向下觸摸手勢,直到它可以確定滾動是否爲意圖。如果值爲NO,滾動視圖會立即調用touchesShouldBegin:withEvent:inContentView :.默認值是YES.' – 2013-10-24 03:01:48

0

如果我可以建議的替代方案,UICollectionView有稱爲真棒委託方法

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { } 

可能處理click到該小區......如果你正在尋找特定事件發生就像看到的圖像更改到按鈕的狀態,你可以硬編碼在...當用戶按下按鈕做一兩件事,當他們釋放按鈕做的另一件事....

根據文檔以及

UIControlStateSe被選中 控件的選定狀態。對於許多控件,這個狀態對行爲或外觀沒有影響。但其他子類(例如UISegmentedControl類)可能會根據其所選狀態而有不同的外觀。您可以通過選定的屬性檢索並設置此值。

在laymens方面。對於一個UIButton「選定國」什麼也不做......

如果按鈕是假設它的點擊時變暗,並且它沒有這樣做,那麼你可能不得不這樣做如果編程,但我不完全知道你正在嘗試做的...

調光功能與突出顯示的狀態

UIControlStateHighlighted 強調了控制的狀態。當觸摸進入和退出過程中以及觸摸事件發生時,控件進入此狀態。您可以通過突出顯示的屬性檢索並設置此值。

在laymens方面

,你觸摸它強調

按鈕,看看是否按鈕改變狀態正常,你可以做這樣的事情

[button addTarget:self action:@selector(functionToCall:) forControlEvents:UIControlEventAllTouchEvents]; 

NSLog(@"Selected: %i", button.selected); 
NSLog(@"Highlighted: %i", button.highlighted); 
NSLog(@"Normal State or not: %i", button.state); 

的「functionToCall將被調用時,任何類型的touch甚至發生在按鈕上,並且在那個函數中你可以使用這3個NSLogs將打印到你的控制檯的不同的UIControlState值,這將顯示按鈕工作正常,並顯示它可能是一個UIViewCollection錯誤,如果它是UICollectionView ...然後您將不得不以編程方式調暗按鈕:3

希望這有助於!

+0

我嘗試以編程方式將按鈕設置爲突出顯示的狀態,但它仍然無效。 – 2013-05-05 01:20:51

相關問題