タッチの方法は、リリースビルドで作業されていません
質問
私は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がリリースビルドで、あなたが期待するタイミングで呼ばれて、何も起こりません。私はそれらのそれぞれにログインしていると私は(他のロギングが機能している)すべてのログメッセージが届かない。
もう一つ興味深いのは、私はtouchesBegan / /ラッパービュークラスでオーバーライドエンドメソッドを移動していると、彼らは正常に動作しています。私はそれがボタンに影響を与えたかどうかを確認するために、ラッパークラスでこれらのメソッドをコメントアウトしようとしましたが、それはしませんでした。
私はまた、代わりにUIImageView
のサブクラスであることをUIButton
クラスを変更しようとしたが、touchUpInsideのような任意のイベントを含め、そこに同じ問題を抱えています。彼らは、デバッグに動作しますが、リリースしない。
私はこの問題だけでなく、一般的なイベント処理を研究しようとしたと手ぶらで出ています。次の見て任意のアイデア?
解決
私は最終的に問題を考え出した - 「ボタン」項目のラッパーは、デバッグモードでは0の高さを持っていた、このアプリは、ボタンは、彼らが彼らののヒット領域内でなかったにもかかわらず、感動されていたことを考え出しました親ビューがリリースモードで、(clipsToBoundsはNOので、ボタンのアイテムは、まだ完全に見えていたにデフォルト設定された)、それほどます。
うまくいけば、これは私がまたうまくいけば、それはいつかを固定されます。
アップルのバグにこれを投稿した:)を通過しなければならなかった時間を傷やデバッグ何人かの人々に頭を節約することができます