サイドナビゲーションコントローラーがあり、UIButtonを介して表示します。このNCを[self presentviewcontroller: NC animated: YES completion: nil]
によって直接ルートビューコントローラーにすると、NCのメニュー側がUITransitionView
によってブロックされ、表示されなくなります。
の画像を添付しました 。 は別です。
私は以下を試しました:
UIWindow *window = [(AppDelegate *)[[UIApplication sharedApplication] delegate] window];
window.backgroundColor = kmain;
CATransition* transition = [CATransition animation];
transition.duration = .5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
[nc.view.layer addAnimation:transition forKey:kCATransition];
[UIView transitionWithView:window
duration:0.5
options:UIViewAnimationOptionTransitionNone
animations:^{ window.rootViewController = nc; }
completion:^(BOOL finished) {
for (UIView *subview in window.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UITransitionView")]) {
[subview removeFromSuperview];
}
}
}];
しかし、それは非常にハッキーであり、遷移中にウィンドウのrootviewcontrollerが変化するため、少し途切れがちで、navigationcontrollerの一部と右上隅が黒くなります。それは非常に悪く見えます。
UITransitionView
を介してタップイベントを取得するには、containerView
のuserInteractionEnabled
をfalse
に設定します。これは、UIViewControllerAnimatedTransitioning
を使用してカスタム遷移アニメーションを実行している場合です。
例、animateTransition(_:)
で:
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
containerView.userInteractionEnabled = false
...
}
私は同じ問題に直面していました、そしてこの問題は私にとって解決されました、
navigationController.setNavigationBarHidden(true、アニメーション:false)
ビューコントローラーのナビゲーションバーとしてカスタムビューを使用しているので、これは私にとってはうまくいきました。
私は同じ問題を抱えていましたが、少し異なるシナリオで、ビューを見つけるために非常に似たようなことをしましたが、問題を引き起こす可能性のあるビューを削除する代わりに、ユーザー操作を無効にして、タッチイベントがそれをスローするようにしましたオブジェクトはユーザーの操作を処理できます。私の場合、これはアプリをiOS 10に更新した後にのみ存在し、iOS 9で実行されている同じコードはこれに該当しませんでした。
UITransitionViewがビューをブロックし続け、ユーザーの操作を妨げるという同様の問題がありました。
私の場合、これは未完成のカスタムアニメーションUIViewController遷移によるものでした。
私は移行を適切に完了するのを忘れていました:
TransitionContext.completeTransition(transitionContext.transitionWasCancelled)
または
TransitionContext.completeTransition(!transitionContext.transitionWasCancelled)
の中に
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {}
UIViewControllerAnimatedTransitioning
プロトコルから
ポップオーバービューコントローラーでaccessibilityElementsを設定していたときに、この問題が発生しました。要素の配列の割り当てを削除して修正します。