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]; 
          } 
         } 
        }]; 

Но это очень Hacky, и как 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

Если я отключил взаимодействие контейнера ViewView, клики по представленному представлению также проваливаются. – Alper

+0

любое решение? – yasirmturk

-1

Лучшего, удалить UITransitionView, чтобы быть ясен

использовать эту строку код SWIFT 3,0

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