7

サイドナビゲーションコントローラがあり、UIButton経由で表示しています。このNCをルートビューコントローラに直接[self presentviewcontroller: NC animated: YES completion: nil]で作成すると、何らかの理由でNCのメニュー側がブロックされ、私が消えることができないUITransitionViewでブロックされます。UITransitionViewが表示された後でブロックされているビュー

私はview hierarchyの画像を添付しました。 Hereが別です。

私は次のことを試してみました:

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と右上のターンの一部です黒。それは非常に悪く見えます。

+0

があなたをしました根本原因を見つけますか?私はここで同じ問題に出会った。ビューを削除するか、ビューのタッチを無効にすることは回避策のようですが、どのように回避するのですか?なぜ起こったのか分かりません。 – RainCast

+0

私はそれほど前にはわかりませんでしたが、私はライブラリを完全に切り替え、JASidePannelControllerと一緒に行ったと思います。 https://github.com/gotosleep/JASidePanels 非常に扱いやすくなりました。 – Jameson

+0

ありがとう@ジャメオン! – RainCast

答えて

1

私は同じ問題を抱えていましたが、少し異なるシナリオでは、ビューを見つけるために非常に似たようなことをしましたが、より問題の多いビューを削除する代わりに、それと他のオブジェクトはユーザーの対話に対処できます。 私の場合は、これは、アプリケーションをiOS 10にアップデートした後にのみ存在し、iOS 9で実行されている同じコードはこれに該当しませんでした。

3

UITransitionViewでタップイベントを取得するには、containerViewuserInteractionEnabledfalseに設定します。これは、UIViewControllerAnimatedTransitioningを使用してカスタムトランジションアニメーションを実行する場合です。あなたのanimateTransition(_:)

例、:

func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 

    let containerView = transitionContext.containerView()   
    containerView.userInteractionEnabled = false 

    ... 
} 
+3

containerViewのインタラクションを無効に設定すると、提示されたビューのクリックも同様に表示されます。 – Alper

+0

これに対する解決策はありますか? – yasirmturk

-1

最高、UITransitionViewを削除し、明確な

使用になるこのラインコードSWIFT 3.0

@IBAction func MoveBack(_ sender: Any) 
 
    { 
 
     dismiss(animated: true, completion: nil) 
 
     
 
    }

関連する問題