9

UIButtonをUICollectionView補足ビュー(フッター)に配置しようとしています。ストーリーボードを使用してUIButtonをUICollectionViewCellのサブクラスに接続し、背景画像を含めてプログラムでそのプロパティを変更できます。ただし、ボタンの内側のタッチアップイベントをメソッドに接続すると、起動しません。実際、ボタンはユーザーのタッチに視覚的に反応しているようには見えません。トラブルシューティングでは、コレクションビューのヘッダーにUIButtonを追加しようとしましたが、同じ動作が見られました。無関係なビューにボタンを追加すると、押されたときにインタラクション効果が生成されます。

UICollection補足ビューにUIButtonを実装するために特別なことをする必要がありますか?

4

2 に答える 2

19

補足ビューはUICollectionReusableView、 ではなく、 (またはそのサブクラス) である必要がありUICollectionViewCellます。

いずれにせよ、ボタンが反応しない場合、最初にすべきことは、すべての祖先ビューが にuserInteractionEnabled設定されていることを確認することYESです。ボタンが画面に表示されたら、デバッガーで一時停止し、次の操作を行います。

(lldb) po [[UIApp keyWindow] recursiveDescription]

リストでボタンを見つけて、そのアドレスをコピーします。次に、それと各スーパービューを確認できます。例:

(lldb) p (BOOL)[0xa2e4800 isUserInteractionEnabled]
(BOOL) $4 = YES
(lldb) p (BOOL)[[0xa2e4800 superview] isUserInteractionEnabled]
(BOOL) $5 = YES
(lldb) p (BOOL)[[[0xa2e4800 superview] superview] isUserInteractionEnabled]
(BOOL) $6 = YES
(lldb) p (BOOL)[[[[0xa2e4800 superview] superview] superview] isUserInteractionEnabled]
(BOOL) $8 = YES
(lldb) p (BOOL)[[[[[0xa2e4800 superview] superview] superview] superview] isUserInteractionEnabled]
(BOOL) $9 = YES
(lldb) p (BOOL)[[[[[[0xa2e4800 superview] superview] superview] superview] superview] isUserInteractionEnabled]
(BOOL) $10 = NO
(lldb) po [[[[[0xa2e4800 superview] superview] superview] superview] superview]
(id) $11 = 0x00000000 <nil>

ここで、ルート ( ) までのすべてのビューがからUIWindow返されることがわかりました。ウィンドウのスーパービューは nil です。YESisUserInteractionEnabled

于 2012-11-26T20:19:02.440 に答える