9

ユーザーが UITableViewCell にタッチダウンしたときのカスタム動作を実装したいと考えています。ユーザーがタッチダウンしたときに情報を取得するのに最も近いのは、デリゲート メソッドtableView:willSelectRowAtIndexPath:です。ただし、ドキュメントには次のように記載されています。

このメソッドは、ユーザーが行に触れてから指を離すまで呼び出されません。タッチダウンで強調表示されますが、それまで行は選択されません。UITableViewCellSelectionStyleNone を使用して、タッチダウン時のセル ハイライトの外観を無効にすることができます。テーブル ビューが編集モードの場合 (つまり、テーブル ビューの edit プロパティが YES に設定されている場合)、このメソッドは呼び出されません。はいに設定します)。

このタッチダウンを検出してカスタム ハイライト動作を行うためのアドバイスはありますか?

ありがとう!

4

1 に答える 1

36

UITableViewCell をサブクラス化し、メソッドをオーバーライドする必要があります。

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

そして多分、あなたのニーズに応じて:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

スーパーを呼び出すことを忘れないでください!


Apple のドキュメント:


更新 (2015 年 8 月 25 日):

Swift では、次のようにします。

override var highlighted: Bool {
        get {
            return super.highlighted
        }
        set {
            if newValue {
                backgroundColor = UIColor.redColor()
            }
            else {
                backgroundColor = UIColor.blackColor()
            }
            super.highlighted = newValue
        }
    }
于 2013-05-30T01:21:53.700 に答える