2013-05-30 9 views
8

ユーザーがUITableViewCellでタッチダウンしたときにカスタム動作を実装したいと思います。ユーザーがタッチダウンしたときに情報を取得するのに最も近いのは、デリゲートメソッドtableView:willSelectRowAtIndexPath:です。しかし、ドキュメントの状態:ユーザーが行をタッチし、その 指を持ち上げるまでカスタムUITableViewCellタッチダウン時のハイライト表示

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

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

ありがとうございます!

+0

あなたは、セルのサブクラスを作成し、その後、 'touchesBeganでどのような変化を実現することができます。'メソッドを、次に 'touchesEndedにそれらの変更を削除します'。 –

答えて

30

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

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

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

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

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


Appleのドキュメント:


更新(25/08/2015):スウィフトで

を、私は思います何かIKEこれは:

override var highlighted: Bool { 
     get { 
      return super.highlighted 
     } 
     set { 
      if newValue { 
       backgroundColor = UIColor.redColor() 
      } 
      else { 
       backgroundColor = UIColor.blackColor() 
      } 
      super.highlighted = newValue 
     } 
    } 
-3
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

} 
関連する問題