/ / uitableviewヘッダーの別々のタップジェスチャー認識機能 - ios、iphone、objective-c、xcode、uitableview

uitableviewヘッダーの別々のタップジェスチャー認識機能 - ios、iphone、objective-c、xcode、uitableview

複数を追加する簡単な解決策がありますかUITapGestureRecognizers?私は、UIImageViewを含むテーブルビューのヘッダーがあります。イメージビューエッジの周りには、ヘッダーのクリアスペースがあります。私が達成しようとしているのは、画像ビューのヘッダーとタップメソッドのタップメソッドを追加することです。ヘッダーに1つ追加すると、ヘッダー全体(画像ビューを含む)が使用されます。それらを分ける方法はありますか?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 250)];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(35, 10, 250, 250)];
_imageView = imageView;
_imageView.image = imageData;
UITapGestureRecognizer *headerTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(headerTapped:)];
_headerTap = headerTap;
UITapGestureRecognizer *imagetap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageTapped:)];
_imagetap = imagetap;
[header addGestureRecognizer:_headerTap];
[_imageView addGestureRecognizer:_imagetap];
[header addSubview:_imageView];
return header;
}

回答:

回答№1の場合は3

ヘッダー全体を覆う透明なボタンを作成します。
イメージビューを上に置き、別の透明ボタンで覆います。


回答№2の場合は1

これは、ジェスチャ認識プログラムのデリゲートメソッドをリッスンすることで実現できます。ビューの設定方法に応じて、

(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

あなたのレコグナイザーが発射されるかどうかを判断する。 たとえば、選択を実行するためのドロップダウンテーブルビューを持つアプリがあります。私たちは2つの認識装置をインストールしました.1つはウィンドウに表示され、ユーザーがそれを外に出すときにドロップダウンをロールアップし、セルの内容だけである「ボタン」に1つを表示します。このメソッドを使用して、タッチが可視のtableviews boundsの外にあるかどうかを判断します。

その他の関連するデリゲートメソッドは次のとおりです。

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

あなたの説明から、これは使用するのが最善のようです。これにより、ジェスチャ認識ツールがイメージビュー上で認識されないようにヘッダーに指示することができます。例えば

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.headerGestureReconizer && otherGestureRecognizer == self.imageViewGestRecognizer) {
return NO;
}

return YES;
}

また、インスタンスメソッドを使用してジェスチャ認識プログラム内の依存関係を設定することもできます (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer。これは、同じタップでシングルタップとダブルタップレコグナイザのようなものを持っていて、この状況であなたが望むものがないときに最も便利です。