2014-03-18 3 views
1

iPhone 사진 앱처럼 화면에 손가락이있을 때마다 UICollectionViewController의 자동 회전을 비활성화하고 싶습니다.UICollectionView에서 터치를 감지하는 방법은 무엇입니까?

어떻게 수행하나요?

  • 터치 제스처를 사용하는 경우 다른 터치 상태를 구분하는 방법은 무엇입니까? (손가락이 움직 인 후에도 상태는 touching이어야합니다.)
  • touchBegan:withEvent:을 사용하는 경우 해당 코드를 어디에 넣으시겠습니까? (히트보기 UICollectionView의 하위 뷰가 될 수 있습니다.)

답변

6

내가 touchesBegan에 플래그를 설정하고 touchesEnded의 선택을 취소합니다. 그런 다음 shouldAutoRotate 메서드에서 플래그를 확인하고 플래그가 설정된 경우 false를 반환 할 수 있습니다. 이 같은

뭔가 :

// In your UICollectionView subclass: 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // Do stuff 
    ... 
    canRotate = NO; 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // Do stuff 
    ... 
    canRotate = YES; 
} 

// In your UICollectionViewController: 

-(bool)shouldAutorotate 
{ 
    return(canRotate); 
} 
+0

글쎄, 그것은 작동합니다. UICollectionView에서 touchesBegan을 덮어 써야합니다. 왜 그냥 touchesBegan을 덮어 쓸 수 없습니까? UICollectionViewController에서도 UIResponder가 무엇입니까? – smilingpoplar

+0

touchesBegan : 역시 UIViewController 메서드입니다. – smilingpoplar

+0

이 설명은 http://stackoverflow.com/a/1654818/1263403 의미가 있습니다. – smilingpoplar

관련 문제