XIBファイルで設計しているビューがあり、通常どおりUIViewから継承する通常のクラスを作成しています。ビューにスワイプ機能を追加する必要があります。まず、はい、何かが IB をオーバーライドする場合に備えて、IB とviewDidLoad
メソッドの両方でユーザー操作を有効にしました。self.view.userInteractionEnabled = YES;
メソッドでこの方法でスワイプジェスチャレコグナイザーを作成していますviewDidLoad
:
UISwipeGestureRecognizer *swiper = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swiped:)];
[self.view addGestureRecognizer:swiper];
私が持っている場所:
- (void)swiped:(UISwipeGestureRecognizer*)sender {
self.swipeAction();
}
アプリを実行してスワイプ ジェスチャを実行すると、EXC_BAD_ACCESS エラーが発生します。
興味深いのは、self.swipeAction();
ヒットさえしないブレークポイントがオンラインにあることです。すぐにこのエラーが発生します。悪いアクセスエラーが発生することもあれば、次のような非常に奇妙なエラーが発生することもあります。
-[UIViewAnimationState swiped:]: unrecognized selector sent to instance 0x96263f0
UIViewAnimationState
私もそれを見たので、NSString
あまりにも置き換えることができます。出力でそれを取得すると、EXC_BAD_ACCESS ではなく SIGABRT が表示されます。この動作の原因は何ですか? IB でもジェスチャ認識エンジンを作成しようとしましたが、同じ結果が得られました。
動作は完全に不確定です。まったく同じことを 2 回試して、アクセスが悪くなるとすぐに、2 回目の実行で sigabrt が発生します。
私が見逃している基本的なものはありますか?それとも、どこかで深刻なメモリ リークが発生していることを示しているのでしょうか (これは、スワイプ ジェスチャ レコグナイザーでのみ強迫的に表示され、それ以外の場所では表示されません)。エミュレーターと実際のデバイスの両方を、エミュレーターの異なる iOS バージョンで試しました。運が悪い、すべて同じ。
ありがとう、
できる。