gpt4 book ai didi

ios - viewWillTransitionToSize 协调器忽略 block

转载 作者:可可西里 更新时间:2023-11-01 05:12:03 26 4
gpt4 key购买 nike

尝试了新的旋转方法,我需要知道设备是否正在旋转,以便推迟和取消旋转时不需要的操作。

-(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。因此,似乎我的完成 block 从未被调用过。

最佳答案

我遇到了同样的问题。我深入研究了文档。您在 notifyWhenInteractionEndsUsingBlock 中指定的 block 在以下情况下被调用:

When a transition changes from interactive to non-interactive then handler is invoked.

但是,旋转不是交互式过渡。一旦启动,您将无法与之交互。这就是从未调用处理程序的原因。

我最终使用了 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;
}];
}

关于ios - viewWillTransitionToSize 协调器忽略 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26629337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com