2014-03-18 109 views
1

我想禁用UICollectionViewController的自動旋轉,只要屏幕上有手指,就像iPhone照片應用那樣。如何檢測UICollectionView的觸摸?

如何做到這一點?

  • 如果使用輕擊手勢,如何區分不同的觸摸狀態? (該狀態應該是touching,即使在手指移動之後。)
  • 如果使用touchBegan:withEvent:,該放哪些代碼? (命中視圖可以是UICollectionView的任何子視圖。)

回答

6

我將設置一個標誌在touchesBegantouchesEnded清除它。然後在您的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

好,它的工作原理。我應該覆蓋touchesBegan:在UICollectionView中。爲什麼我不能只覆蓋touchesBegan:在UICollectionViewController中,這也是一個UIResponder? – smilingpoplar

+0

touchesBegan:也是一個UIViewController方法。 – smilingpoplar

+0

這個解釋http://stackoverflow.com/a/1654818/1263403是有道理的。 – smilingpoplar