アプリのルート ビュー コントローラーの第 1 レベルに追加したパン ジェスチャを使用して、ユーザーが任意の場所をスワイプしてナビゲーション スタックの前のレベルに移動できるようにします (ジェスチャは、黒くなるのを防ぐために 0 レベルではありません)穴 :) )。これは機能しており、iOS 7 より前のバージョンでも問題なく機能します。
iOS 7 を使用してスワイプ バックしようとすると、コンソールに次のメッセージが表示されます。ナビゲーション バーのサブビュー ツリーが破損する場合があります。
この時点では、アプリはクラッシュしていません。
次に、もう一度スワイプして前のレベルに戻そうとすると、クラッシュします。iOS 7 でこのバグが発生した理由と、それを修正する方法を理解しようとしています。どんな助けでも正当にそして大いに感謝します!
これが私のコードです:
RootViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pop:)];
pan.delegate = self;
[self.view addGestureRecognizer:pan];
}
- (void)pop:(UIPanGestureRecognizer*)pan
{
if (pan.state == UIGestureRecognizerStateBegan || pan.state == UIGestureRecognizerStateChanged)
{
CGPoint vel = [pan velocityInView:self.view];
if (vel.x > 1000)
{
[self.navigationController popViewControllerAnimated:YES];
}
}
}