2

UIView をオーバーレイしてカスタム テーブル ビューを構築しようとしています。通常のUIViewで特別なジェスチャー、特にダブルタップしてアクティブにするパンジェスチャー(タップアンドホールドしてからパン)を認識しようとしています。

現在、カスタム UITableViewController とカスタム UIView があります。互換性の理由から、UIViewController 内の UITableView ではなく UITableViewController として維持したいと思います (既存の UITableViewController を簡単に置き換えることができます)。

ダブルタップとパンは問題ありませんが、問題は、テーブル ビューで実際に行を選択できなくなったことです。テーブル内をスクロールできますが、実際の選択は機能しません。

理想的には、すべてのタップ、スワイプ、および通常のイベントを任意のカスタム テーブル ビュー セルに保持できるようにしたいと考えています (たとえば、左または右にスワイプして特定のアクションをアクティブにできるクリアまたはメールボックス)。

テーブル ビューのメソッドからテーブル ビュー セルを取得できることはわかっていindexPathForRowAtPoint: ますが、それではトグルを選択することしかできません。

また、次のように開始されたタッチをオーバーライドしようとしました。

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [self.nextResponder touchesBegan: touches withEvent: event];
}

他の関連するイベントと同様に、nextResponder がカスタム UITableViewController であることを確認しましたが、何もできませんでした。

他の多くの投稿をチェックインしましたが、解決策はありませんでした。私が試した他のいくつかのことは次のとおりです。

  • シングル タップ ジェスチャ レコグナイザを追加して UITableViewController に転送する

    [_containingTableViewController gestureRecognizerShouldBegin: tapGesture];
    
  • さまざまなジェスチャ認識デリゲートを実装

    -(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:  (UITouch *)touch{
        return ( touch.tapCount >= 2 );
    }
    

    同様に、YES と NO の両方:

    -(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    

また、テーブルビューで設定を試みましcanCancelContentTouchesたが、どちらの値も機能しません。

どんな助けでも大歓迎です、私はかなりの数を試しましたが、それを得ることができません!

本当に必要な場合は、プロジェクト全体を GitHub に投稿できるかもしれませんが、最初に少しクリーンアップする必要があります。

ありがとう!

4

1 に答える 1