簡體   English   中英

viewWillTransitionToSize協調器忽略塊

[英]viewWillTransitionToSize coordinator ignores block

嘗試游戲新的旋轉方法,我需要知道設備是否正在旋轉,以便推遲和取消旋轉時不需要的動作。

-(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。 因此,似乎永遠不會調用我的完成塊。

我有同樣的問題。 我潛入了文檔。 您在notifyWhenInteractionEndsUsingBlock指定的塊在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;
     }];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM