2013-05-03 2 views
6

각 UICollectionViewCell에 하위보기로 UIButton이있는 UICollectionView가 있습니다. UIButtons는 탭에 아무런 문제가 없지만 (타겟이 실행되면) 아무런 문제가 없지만 버튼 자체는 선택된 상태로 바뀌지 않습니다 (버튼의 모양과 느낌이 변경되지 않음). UICollectionViewCell이 버튼에 터치 이벤트를 제대로 전달하지 못하기 때문에 직감이 있었지만 확실하지 않습니다. 그렇다면이 시나리오에서 버튼의 상태가 올바르게 변경되도록 설정하려면 어떻게해야합니까? 내가 대안을 제안 할 수있는 경우UICollectionViewCell의 UIButton 하위 뷰가 제어 상태를 변경하지 않습니다.

답변

12

UIScrollview (따라서 UICollectionView도)가 YES로 설정되어 기본적으로 delaysContentTouches라는 속성이 있습니다, NO로 변경하고 그것이하도록되어처럼 버튼을 강조한다.

+0

아름다운! 완벽하게 일했습니다.궁금한 점이 있다면 해당 속성에 대한 관련 문서는 다음과 같습니다.'스크롤 뷰가 터치 다운 제스처 처리를 지연하는지 여부를 결정하는 부울 값입니다. 이 속성의 값이 YES이면 스크롤보기가 의도인지 여부를 확인할 수있을 때까지 스크롤보기가 터치 다운 제스처를 처리하는 것을 지연합니다. 값이 NO이면 스크롤 뷰는 즉시 touchesShouldBegin : withEvent : inContentView :를 호출합니다. 기본값은 YES입니다 .' –

0

의 UICollectionView라는 멋진 대리자 메서드를 가지고 해당 셀에 클릭을 처리 할 수 ​​

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

... 당신은 이미지를 보는 것처럼 발생하는 특정 이벤트를 찾고 있다면 단추의 상태로 변경하면 하드 코딩 할 수 있습니다 ... 버튼을 누르면 한 가지 작업을 수행하고 다른 작업은 버튼을 놓을 때 ....

설명서에 따라

UIControlStateSe 선택됨 컨트롤의 선택된 상태입니다. 많은 컨트롤에서이 상태는 동작이나 모양에 영향을 미치지 않습니다. 그러나 다른 하위 클래스 (예 : UISegmentedControl 클래스)는 선택한 상태에 따라 모양이 다를 수 있습니다. 선택한 속성을 통해이 값을 검색하고 설정할 수 있습니다. 있는 UIButton "선택한 국가"에 대한 laymens 측면에서

..이 버튼을 클릭했을 때 어두워 가정하고이 그렇게되어 있지 않은 경우

은, 당신은 그렇게 할 수 있습니다 아무것도 ...하지 않습니다 난 당신이 뭘 하려는지 정확히 모르겠어요 프로그래밍 경우,하지만 ...

디밍 기능이 강조된 상태

UIControlStateHighlighted 컨트롤의 강조 상태에있다. 컨트롤은 추적 중에 터치가 시작되거나 종료 될 때 및 터치 업 이벤트가있을 때이 상태로 들어갑니다. 강조 표시된 특성을 통해이 값을 검색하고 설정할 수 있습니다. laymens 측면에서

, 당신은 버튼을 사용하면 "functionToCall가 호출 될이

[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); 

처럼 뭔가를 할 수 제대로 상태를 변경하는 경우가

을 강조 년대 버튼을 볼 터치하면 모든 종류의 터치도 버튼에 발생하고 그 기능을 사용하면 콘솔에 다른 UIControlState 값을 인쇄하는 3 개의 NSLog를 가질 수 있습니다.이 경우 버튼이 제대로 작동하고 UIViewCollection 오류 일 수 있음을 보여줍니다 UICollectionView ... 그러면 프로그래밍 방식으로 단추를 흐리게 처리해야합니다. 3

희망이 도움이됩니다.

+0

단추를 프로그래밍 방식으로 강조 표시된 상태로 설정하려고 시도했지만 여전히 작동하지 않았습니다. –

관련 문제