4

UITableViewCell強調表示されたときに何が起こるかを制御したい。

次のようにiOS 6.0で可能であることを私は知っています:

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath

しかし、5.0 以上をターゲットにしている場合、どうすればよいでしょうか?

4

3 に答える 3

3

iOS 5 での最良のオプションは、この方法を使用することです。

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

このメソッドは、ユーザーがタップしてからセルから指を離した場合にのみ呼び出されますが (ここで説明されているように)、5.x と 6.x の両方で使用できる他のメソッドを認識していません。

于 2013-05-16T11:45:10.977 に答える
2

カスタム UITableViewCell がある場合は、オーバーライドできます

-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

セル上でタッチが押されたとき (highlightedパラメータは YES になります)、タッチがアップまたはキャンセルされたとき (highlightパラメータは NO) に呼び出されるメソッドです。

また、このアプローチは iOS 3.0 以降で機能します。

于 2013-05-16T12:50:34.900 に答える
2

私のプロジェクトの1つでは、ユーザーがセルに触れるとすぐに画像を強調表示する必要があったため、このようにIos 5.0で強調表示状態を実装しました。これらの関数は、カスタム セル クラスで記述されます。必要に応じてこれらの関数を変更します。

  -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [self hightlightImage];
        [self performSelector:@selector(detecetedLongTap) withObject:nil afterDelay:1.0];
        [super touchesBegan:touches withEvent:event];
    }
    -(void)detecetedLongTap{
        [self hightlightImage];
    }
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    { 

        [super touchesMoved:touches withEvent:event];
    }
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if (titleLabel.textColor == [UIColor blackColor]) 
            [self hightlightImage];
        [super touchesEnded:touches withEvent:event];
    }
于 2013-05-16T11:54:05.757 に答える