私は、2 つの主な目的を果たすナビゲーション ベースの iPhone 専用アプリに取り組んでいます。テーブル ビュー セルがタップされたときのデフォルト アクション。ここで、同じデータに関連付けられたオプションの小さなセットを提供する必要があります。ただし、didSelectRowAtIndexPath: と accessoriesButtonTappedForRowAtIndexPath: の両方のメソッドが使用されることは明らかです。
したがって、私のオプションはダブルタップ方法を実装することのようです。追加オプションの小さなリストは、上記のテーブル行をダブルタップした後に (ご想像のとおり) 表示されます。または、できればタップ アンド ホールド方式を使用します。私が知る限り、SDK 4.0 ではタップ アンド ホールドが採用されているようです。ダブルタップ オプションを使用することにしましたが、少し問題があります。
何よりもまず、touchesBegan:withEvent: メソッドがまったく呼び出されていないようです。メソッド内に配置されたブレークポイントは、アプリケーションの実行中に呼び出されることはなく、テーブル ビューはメソッドを挿入する前とまったく同じように応答します (つまり、既定のアクションを実行します)。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
if (aTouch.tapCount == 2) {
[NSObject cancelPreviousPerformRequestsWithTarget:self];
}
}
次に、実際にはシングルタップを処理する必要はありません。didSelectRowAtIndexPath: メソッドは、シングルタップを問題なく処理できます。ダブルタップは私が扱いたいファンキーなものです。答えには、「テーブルビューでシングルタップを処理し、touchesBegan: メソッドでダブルタップを処理することはできません。タッチ処理メソッドはそれらすべてを処理する必要があります。」というフレーズが含まれていると思います。
この問題を扱ったことのある方からのアドバイスをいただければ幸いです。前もって感謝します。