2

検索しましたが、UITableView で UITouch を検出できない理由がよくわかりません。私が今持っているのは、ビューにテーブルビューがあるビューコントローラーです。参考までに下の写真を見てください

ここに画像の説明を入力

実装クラスでは、各 UITouch メソッドのブレークポイントを有効にしています。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

これらのブレークポイントは、テーブル ビュー (オレンジ色の領域) の外側に触れた場合にのみ呼び出されます。

わかりません。UITableView は、UIResponder のサブクラスである UIView のサブクラスである UIScrollView のサブクラスだと思いました。これは、UITouch を呼び出す必要があることを意味します。(間違っていたら訂正してください)

すべてのコメントはここで歓迎され、感謝されます。

4

4 に答える 4

1

テーブルは、スクロール ビューを使用して、パン ジェスチャ レコグナイザーを使用するパンを処理します。それを利用してみませんか?

CGPoint location = [self.tableView.panGestureRecognizer locationInView:self.tableView];
于 2013-08-25T22:54:13.503 に答える
1

UITableView のタッチを検出したい場合は、tableview のサブクラスを作成し、UIResponder メソッドの実装 canBecomeFirstResponder を追加します。

@interface MyTableView: UITableView
@end

@implementation: MyTableView
  - (BOOL) canBecomeFirstResponder{
    return YES;
  }

  // then implement all other touch related methods, remember to call super in these methods
  // such that it correctly forwards the events to other responders
  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    // 
  }

  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{

  }

  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

  }

  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

  }
@end
于 2013-08-25T22:57:47.600 に答える