如何检测UICollectionView上的触摸?

时间:2014-03-18 17:47:47

标签: ios touch uicollectionview uitapgesturerecognizer

我希望屏幕上只要有一个手指就会禁用UICollectionViewController的自动旋转,就像iPhone照片应用程序一样。

怎么做?

  • 如果使用点击手势,如何区分不同的触摸状态? (即使在手指移动之后,状态应为touching。)
  • 如果使用touchBegan:withEvent:,该代码放在何处? (命中视图可以是UICollectionView的任何子视图。)

1 个答案:

答案 0 :(得分:7)

我会在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);
}