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 などのイベントを含め、同じ問題が発生しています。これらはデバッグでは機能しますが、リリースでは機能しません。
私はこの問題と一般的なイベント処理を調査しようとしましたが、手ぶらで出てきました。次にどこを見るべきか、何かアイデアはありますか?