UITableViewControllerのUITableViewCellからTouchesBeganを受信して、ユーザーがセルに触れたときを知るにはどうすればよいですか?
2 に答える
セルに触れると、セルが強調表示されます。setHighlighted:
のサブクラスでオーバーライドして、 UITableViewCell
YES(ユーザーが触れている)またはNO(ユーザーが持ち上げられている)に変わったときの外観を調整してみてください。
(オーバーライドtouchesBegan:withEvent:
も機能しsetHighlighted:
ますが、触れなくなったときにキャプチャするために使用する方が簡単です。それ以外の場合は、オーバーライドする必要がありますtouchesEnded:withEvent:
)touchesCancelled:withEvent:
。
ユーザーがセルをタップしたときにトリガーされるイベントを探しているが、それが正式に選択される前に、次のUITableViewDelegate
方法があります。
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
ドキュメントから:
このメソッドは、ユーザーが行に触れてから指を離すまで呼び出されません。タッチダウンで強調表示されますが、その行はそれまで選択されません。UITableViewCellSelectionStyleNoneを使用して、タッチダウン時のセルのハイライトの表示を無効にすることができます。このメソッドは、テーブルビューが編集モードの場合(つまり、テーブルビューの編集プロパティがYESに設定されている場合)は呼び出されません。ただし、テーブルビューで編集中の選択が許可されている場合(つまり、テーブルビューのallowsSelectionDuringEditingプロパティがYESに設定)。
編集
求めている動作を実現するには、メソッドをサブクラスUITableViewCell
化して実装する必要があると思います
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
イベント処理の詳細については、すべてのUIViewsサブクラスのUIResponder
クラスリファレンスを参照してください。