魅力的な。あなたが最初にこれを投稿したとき、私はあなたのコードに何らかの問題があると思っていましたが、あなたの明確なコメントを考慮して、私はそれを自分で試してみることにしました。私はあなたと同じ行動を経験します。
具体的には、Interface Builderでジェスチャレコグナイザーを作成し、それを適切なものにリンクして、IBAction
別のViewControllerにプッシュしてポップしても正常に機能することを確認しました。しかし、そのセカンダリView Controllerで、元のView Controllerに戻った直後にメモリ警告をシミュレートすると、同じクラッシュが発生します。
簡単に修正できます。アプローチがあるようです。または、Interface Builderを完全にバイパスして、コードで独自のジェスチャレコグナイザーを作成することもできます。この問題は発生しません。たとえば、
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:recognizer];
// [recognizer release]; // uncomment in non-ARC project
}
このように手動で作成した場合、メモリ警告をシミュレートした後、ビューに戻ったときにクラッシュすることはありません。それがあなたの解決策です。
幸い、これはXcodeとiOSの次のバージョンのベータ版で修正されたようです。