1

iPhone 用に作成したカスタム コントロールが、デバッグ モードでビルドすると完全に機能するのに、リリース モードでビルドすると部分的にしか機能しないという奇妙な問題が発生しています。

メイン ラッパー ビューは のサブクラスでUIViewあり、サブビューとして追加される「ボタン」の行が含まれています。カスタム ボタン クラスは拡張UIImageViewされ、次のシグネチャでタッチ メソッドをオーバーライドしています。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

デバッグ コードをビルドするとき、これら 4 つの関数はすべて期待どおりのタイミングで呼び出されますが、リリース ビルドでは何も起こりません。それぞれにログインしていますが、ログメッセージが表示されません (他のログは機能しています)。

もう 1 つの興味深い点は、ラッパー ビュー クラスでオーバーライドされた touchesBegan/Moved/Ended メソッドがあり、正常に動作していることです。ボタンに影響があるかどうかを確認するために、ラッパー クラスでこれらのメソッドをコメント アウトしようとしましたが、そうではありませんでした。

UIImageViewまた、代わりにクラスをサブクラスに変更しようとしましたUIButtonが、touchUpInside などのイベントを含め、同じ問題が発生しています。これらはデバッグでは機能しますが、リリースでは機能しません。

私はこの問題と一般的なイベント処理を調査しようとしましたが、手ぶらで出てきました。次にどこを見るべきか、何かアイデアはありますか?

4

1 に答える 1

3

私は最終的に問題を理解しました.「ボタン」アイテムのラッパーの高さは0でした。 clipsToBounds はデフォルトで NO に設定されていたため、ボタン項目はまだ完全に表示されていました)、リリース モードではそれほどではありませんでした。

うまくいけば、これが私が経験しなければならなかった頭のスクラッチとデバッグの時間を節約するのに役立つことを願っています:)私はこれをAppleのバグにも投稿したので、いつか修正されることを願っています.

于 2009-04-24T19:43:43.133 に答える