9

にクラッシュ私は、その理由とNSInvalidArgumentExceptionを取得しています:-[UITapGestureRecognizer initWithCoder:]: unrecognized selector sent to instanceiOS5を安定したアプリケーションは、iOS4.3シミュレータ

私の理解UITapGestureRecognizersがios4.xでサポートされていたということでしたか?

サブios5バージョン用に別のxibファイルを読み込むことは可能ですか?

+2

彼らは4.xでサポートされていますが、あなたはxibにそれらをドロップすることはできませんということです(私はそれがここにあると思います)。あなたは、コードで設定するか、別のxibを作成し、バージョンチェック後にロードすることはできません。 – mit3z

+0

[この潜在的に関連する質問](http://stackoverflow.com/questions/6520932/uigesturerecognizer-in-uiview-object)をご覧ください。 UITapGestureRecognizersを別の方法でインスタンス化する必要があるかもしれません。 –

+0

あなたのレコグナイザの割り当てが解除されているようです... UIGestureRecognizerは-initWithCoderに応答しないため、クラッシュしています。 (私はあなたのUIGestureRecognoizerオブジェクトへのポインタを解除すると、initWithCoderに応答するはずの他のオブジェクトに引き継がれていると思います...) –

答えて

17

は、iOSの4.3には、この機能のみときまで手動でコードを使用してセットアップをサポートしています。 Interface Builderではサポートされていません。彼らは単にビルド時の警告として、これを追加した場合

Appleはこの上で私たちにすべての悲しみを保存しているだろう。

+1

これは私の問題を解決しました。 GestureRecognizerをコードで簡単に追加するには、ここでその答えをチェックしてください:http://stackoverflow.com/questions/5954934/issue-with-a-uitapgesturerecognizer –

1

クラッシュする前に解除されているNSCoding準拠のオブジェクトがあると思います。 UITapGestureRecognizerはそのアドレスに割り当てられ、消滅したオブジェクト(参照ではなく)がinitWithCoderを呼び出しようとすると、代わりにジェスチャーレシーバーで実際にこのメソッドが呼び出されます。

あなたの問題は、割り当てられていないオブジェクトから来ますが、gestureRecognizerからのものではありません。

すべてのIBOutletプロパティを保持してください。元の質問に彼のコメントで@ mit3z状態として

+0

私はすべてのIBOutletsでretainを呼び出します。私はARCを使用しています... – Andy

+0

ARCと保留の両方を使用することはできません。コンパイルを保持する呼び出しがARCを使用していない場合。 –

+0

私は彼が実際にオブジェクト自体の上でretainを呼ぶのではなく、彼がIBOutletのプロパティをタイプしているか保持していることを意味していると思います。実際にアークで 'retain'を呼び出すと、コードはコンパイルされません。 – btomw

関連する問題