画面に表示されるサブビュー画像のグリッドがあります。これは基本的に、一連の画像をチェッカー ボードのように画面に並べたものです。これらの画像サブビューのそれぞれにジェスチャ認識機能を追加して、ユーザーが画像サブビューのいずれかに触れたときにサブビュー、つまり座標、タグなどを取得できるようにしたいだけです。ビュー階層は次のようになります。
- スーパービュー
- gridContainer ビュー
- および個々のサブビュー - 画像付き
アップルのドキュメントを見ると、ジェスチャー認識機能を gridContainer ビューに追加できるようになり、各サブビュー (画像付き) がジェスチャー認識機能を継承する必要があるようです。これまでのところ、これが私が試したことです。ゲッターでグリッドコンテナービューを初期化しました。また、getter で createGesture メソッドを呼び出しました。これは、ジェスチャ認識機能を gridContainer ビューに追加することになっています。ただし、実行時にアクションの handleSingleTap メソッドを指しているエラーが発生します。EXC_BAD_EXCESS を読み取ります。また、gridContainer ビューの外側のビューがタッチ イベントに応答しないようにすることも注目に値します。助けてくれてありがとう。
実装しようとしているコードは次のとおりです。
- (UIView *)gridContainerView
{
if (!_gridContainerView)_gridContainerView = [[UIView alloc] init];
[self createGesture];
return _gridContainerView;
}
- (void)createGesture
{
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self.gridContainerView
action:@selector(handleSingleTap:)];
singleTap.numberOfTapsRequired = 1;
[self.gridContainerView addGestureRecognizer:singleTap];
}
これを理解するために追加のコードが必要な場合は、お知らせください。
編集: handleSingleTap メソッドを含む:
- (IBAction)handleSingleTap:(id)sender
{
CGPoint tapPoint = [sender locationInView:sender];
NSLog(@"sender = %@",sender);
NSLog(@"tappoint = %@", tapPoint);
}