2014-10-29 71 views
4

嘗試遊戲新的旋轉方法,我需要知道設備是否正在旋轉,以便推遲和取消旋轉時不需要的操作。viewWillTransitionToSize協調器忽略塊

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{ 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 

    _rotating = YES; 

    [coordinator notifyWhenInteractionEndsUsingBlock:^(id<UIViewControllerTransitionCoordinatorContext> context) { 
     _rotating = NO; 
    }]; 
} 

看起來很直接,應該基於我對文檔的解釋工作,但顯然沒有。似乎_rotating設置爲YES,並且永遠不會設置爲NO。因此,我的完成塊似乎從未被調用過。

+0

爲什麼不使用-animateAlongsideTransition:completion:? – Dex 2014-11-01 05:53:32

回答

8

我有同樣的問題。我跳入了文檔。

當從互動到非交互然後 處理器的過渡變化被調用:當你在notifyWhenInteractionEndsUsingBlock指定塊被調用。

但是,輪換不是交互式轉換。一旦開始,你就無法與之互動。這就是爲什麼處理程序從未被調用。

我結束了使用animateAlongsideTransition:completion:的方法。它像一個魅力。

- (void)viewWillTransitionToSize:(CGSize)size 
     withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator 
{ 
    _rotating = YES; 

    [super viewWillTransitionToSize:size 
      withTransitionCoordinator:coordinator]; 

    [coordinator animateAlongsideTransition:nil 
           completion:^(id<UIViewControllerTransitionCoordinatorContext> context) 
    { 
     _rotating = NO; 
    }]; 
} 
+0

這對我沒有意義,發送零。現在你解釋一下,非常有意義。仍然感覺像一個黑客工作,但工作。 – 2015-01-28 14:01:04