1

イメージ、ラベル、ビューなどのコンテンツを含む UICollectionViewCell があります。

この動作を取得したいと思います(通常のセルの反対の動作のように):

  • このセルには、デフォルトで、選択されていないときのようなビュー(不透明度を示すためにアルファが設定された単純な UIView)があります。
  • ユーザーがセルを選択すると、このアルファ ビューを削除する必要があります。

UITapRecognizer をインストールしようとすると:

    // Create gesture recognizer
UITapGestureRecognizer *oneTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onShadowLayerPressed)];

// Set required taps and number of touches
[oneTap setNumberOfTapsRequired:1];
[oneTap setNumberOfTouchesRequired:1];

// Add the gesture to the view
[self.shadowView addGestureRecognizer:oneTap];

そしてメソッドの後

 - (void)onShadowLayerPressed
{
    [super setSelected:YES];
    [self setSelected:YES];
}

タップは self.shadowView から受信されますが、セルには送信されません....

この問題を解決するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

あなたが使用していて、ドキュメント@property (nonatomic, getter=isSelected) BOOL selectedによると、

通常、このプロパティの値を直接設定することはありません。このプロパティの値をプログラムで変更しても、セルの外観は変わりません。セルを選択して強調表示するには、コレクション ビュー オブジェクトの選択メソッドを使用することをお勧めします。

したがって、次を使用することになっています:

- (void)selectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UICollectionViewScrollPosition)scrollPosition

ここに文書化されています。

于 2012-12-27T18:07:31.577 に答える