0

私の再利用可能なセルには、すべての情報 ( 、 など) を含むビューが含まれUIImageViewUILabelおり0,0,320,63mainView

また、プログラムで追加された別のサブビューがあり-160,0,160,63、 という名前のフレームがleftViewに含まれていmainViewます。

UISwipeGestureRecognizer をセルに追加したので、スワイプすると mainView のフレームが に変わり160,0,320,63ます。それは完全に機能します。

に問題があり、ジェスチャ認識機能が に設定されているものがありますleftView。しかし、このジェスチャ レコグナイザーは決して起動されず、メソッドを呼び出します。UIImageViewuserInteractionEnabledYES-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

この SO answerを見ましたが、役に立ちません。

誰かがそれを手伝ってくれますか?

ありがとうございました !!

編集:これが私のジェスチャー認識エンジンのインスタンス化です

// Selector is valid, I checked it out. _viewController too.
UIImageView * imageView = [[UIImageView alloc] initWithFrame:frame];
[imageView setImage:someImage];
[imageView setUserInteractionEnabled:YES];
[_leftView addSubview:imageView];
UITapGestureRecognizer * gr = [[UITapGestureRecognizer alloc] initWithTarget:_viewController action:selector];
[imageView addGestureRecognizer:gr];
4

3 に答える 3

2

ジェスチャレコグナイザの初期化が見られない場合、多くの問題が発生する可能性があります。ただし、主に次の 2 点を確認してください。

1.)cancelsTouchesInViewフラグを設定しましたか? 通常、これは tableView のタッチを台無しにしますが、調査する必要があります。

2.) ストーリーボード内のサブビュー レイアウトを確認しましたか? imageView の一部をブロックしているものはありますか?

-また、実際にgestureRecognizerを正しく割り当てましたか?

于 2013-07-03T21:45:06.010 に答える
1

私は自分でそれを理解しました。

問題は、leftViewフレームがフレームの外側にあったためですmainView(x で -160)。

私の問題を解決するためにmainView、ストーリーボードも -160 から始まるように変更しました。leftViewx の -160 で加算する代わりに、0 で加算します。

とにかくありがとう !

于 2013-07-04T07:05:27.087 に答える