点击时,UICollectionView单元格会更改背景

时间:2013-06-20 09:18:21

标签: ios objective-c uicollectionview

是否有可能仅在点击元素时更改UICollectionView的背景颜色。我试过了:

-(void) collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath{
    //change color when tapped
}

-(void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath{
    //change back on touch up 
}

但结果是,只有当我的手指持续一段时间后才能看到变化。 是否有UITableViewCell方法willSelectItemAtIndexPath:中的类似内容?

3 个答案:

答案 0 :(得分:28)

  

但结果是,只有当我的手指保持更长时间时才能看到变化

您遇到的延迟可能与故事板中的“延迟内容触摸”复选框有关。

the checkbox in storyboard

尝试取消检查。

答案 1 :(得分:8)

我想您可能希望保持所选单元格具有不同的背景颜色,对吧? 然后试试这段代码。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor magentaColor];
}

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor cyanColor];
}

只需为不同状态的细胞分配不同的BG颜色即可。 此外,下面的代码是序列触发方法的文档,而有人触摸collectionView单元格。您还可以在UICollectionView.h文件中找到这些文档,UICollectionViewDelegate协议部分。

// Methods for notification of selection/deselection and highlight/unhighlight events.
// The sequence of calls leading to selection from a user touch is:
//
// (when the touch begins)
// 1. -collectionView:shouldHighlightItemAtIndexPath:
// 2. -collectionView:didHighlightItemAtIndexPath:
//
// (when the touch lifts)
// 3. -collectionView:shouldSelectItemAtIndexPath: or -collectionView:shouldDeselectItemAtIndexPath:
// 4. -collectionView:didSelectItemAtIndexPath: or -collectionView:didDeselectItemAtIndexPath:
// 5. -collectionView:didUnhighlightItemAtIndexPath:

答案 2 :(得分:3)

struct TuplePointer(*mut libc::c_void);

impl Drop for TuplePointer {
    // Call the appropriate free function from the library
}