7

我有一個側導航控制器,並通過一個UIButton呈現之後阻斷UITransitionView。當我做這個NC根視圖控制器直接[self presentviewcontroller: NC animated: YES completion: nil],由於某種原因,NC的菜單側由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

謝謝@jameson! – RainCast

回答

1

我有同樣的問題,但有一點不同的場景,我落得這樣做非常相似找到看法,但不是刪除我禁用了用戶交互,所以任何觸摸事件只是去投它可以是更成問題的某種看法它和任何其他對象都可以處理用戶的交互。 在我的情況下,這只是在將應用程序更新到iOS 10之後才存在的,在iOS 9中運行的相同代碼並不屬於這一點。

3

要通過UITransitionView獲取點按事件,請將containerViewuserInteractionEnabled設置爲false。這是如果您通過使用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) 
 
     
 
    }