0

私はまったく同じ問題を抱えています

カスタム UITableViewCell として使用される XIB のカスタム ボタンがタップに反応しない (ios7)

基本的に UITableViewCell のボタンは機能しなくなりました。

IOS 6 では正常に動作していましたが、IOS 7 では動作しなくなりました。

私は同じ解決策を持つ2人を見ました

[cell.contentView setUserInteractionEnabled: NO]

しかし、解決策はまったく意味がありません。

ボタンは明らかに cell.contentView のサブビューです。userinteractionenabled を no に設定すると、cell.contentView のすべてのサブビューに対するユーザー操作が無効になります。では、これは一体どのように機能するのでしょうか。

実際、この問題が最初に存在するように、IOS 7 から IOS 6 の間で何が変更されたのでしょうか。

注:それは私の問題を本当に解決しません。

私が疑ったように、UITableViewCell 内のボタンは実際には contentView のサブビューです。

2013-10-11 13:07:04.946 [15131:a0b] self: <BGCatalogTableCellForCatalog: 0x12e12d20; baseClass = UITableViewCell; frame = (0 0; 320 220); layer = <CALayer: 0x12e12c70>>
2013-10-11 13:07:04.947 [15131:a0b] self.contentView: <UITableViewCellContentView: 0x12e12600; frame = (0 0; 320 220); gestureRecognizers = <NSArray: 0x12e12440>; layer = <CALayer: 0x12e125d0>>
2013-10-11 13:07:04.947 [15131:a0b] self.btnBrochureButton: <UIButton: 0x12e100b0; frame = (0 0; 160 219); opaque = NO; autoresize = RM+TM+BM; layer = <CALayer: 0x12e102c0>>
2013-10-11 13:07:04.948 [15131:a0b] self.btnBrochureButton.superview: <UITableViewCellContentView: 0x12e12600; frame = (0 0; 320 220); gestureRecognizers = <NSArray: 0x12e12440>; layer = <CALayer: 0x12e125d0>>
2013-10-11 13:07:04.948 [15131:a0b] self.btnBrochureButton.superview.superview: <UITableViewCellScrollView: 0x12e12920; frame = (0 0; 320 220); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x12e12840>; layer = <CALayer: 0x12e128f0>; contentOffset: {0, 0}>
2013-10-11 13:07:04.949 [15131:a0b] self.btnBrochureButton.superview.superview.superview: <BGCatalogTableCellForCatalog: 0x12e12d20; baseClass = UITableViewCell; frame = (0 0; 320 220); layer = <CALayer: 0x12e12c70>>
2013-10-11 13:07:04.949 [15131:a0b] <UIButton: 0x12e100b0; frame = (0 0; 160 219); opaque = NO; autoresize = RM+TM+BM; layer = <CALayer: 0x12e102c0>>

したがって、btnBrochureButton.superview と self.contentView は両方とも 0x12e12600 です。

4

2 に答える 2

2

問題を修正しました。IOS 7 以降、contentView は UITableViewCell の直接のサブビューではありません。これは複雑さを引き起こします。

于 2013-10-20T09:32:32.473 に答える
1

これがお役に立てるかどうかはわかりませんが、私の問題はあなたが参照した投稿に記載されている問題に関連していることがわかりましたが、パズルのピースがもう 1 つありました。あなたが説明したのcontentView.userInterActionEnabled = NOと同じ理由で、私にはうまくいきませんでした。

私のアプリでは、テーブル ビュー セルのサイズを動的に変更し、セルのコンテンツに基づいて実行時に高さを変更しています。これにより、セルのサイズが変更されたが、何らかの理由で contentView のサイズが変更されなかったという別の問題が発生しました。 したがって、ボタンは表示されていましたが、contentView の境界外にあったため、ユーザーの操作には使用できませんでした。

私が最終的にそれを発見した方法は、contentView の背景色を別の色に設定することでした。最終的に、それが短すぎることがわかりました。親セルの合計高さを計算した後、contentView の高さを変更することで問題を解決しました。

これがあなたの助けになるか、少なくとも何か新しいことを確認できるようになることを願っています.

于 2013-10-19T17:20:53.977 に答える