【问题标题】:View unusable after dismissViewControllerAnimated:completion:在dismissViewControllerAnimated 后查看不可用:完成:
【发布时间】:2013-08-09 22:46:06
【问题描述】:

我正在迁移使用 NIB 的旧代码以使用手动视图创建 (loadView) 和 自动布局。根视图控制器是一个 container VC(有 2 个子级),它使用自动布局并以模态方式呈现视图控制器,其布局在 NIB 中指定,但尚未使用自动布局。在presentViewController:animated:completion: 之后一切都很好,但是当模态视图通过委托调用以dismissViewControllerAnimated:completion: 关闭时,呈现视图处于一种奇怪的、不可用的状态,其中内容被奇怪地移动并且对触摸没有反应。

我尝试创建最小的测试用例来重现问题,但我未能重现问题。

这可能是什么原因造成的?

【问题讨论】:

标签: uiviewcontroller autolayout


【解决方案1】:

我在我的根 UIView 上设置了 translatesAutoresizingMaskIntoConstraints = NO;。 它出现在“最外层”UIView——视图层次结构根部的超级视图必须使用默认的translatesAutoresizingMaskIntoConstraints = YES。 一旦我删除了它,一切都按预期工作。

【讨论】:

  • 您是否发现这适用于子视图控制器的根视图,即使它被添加到父视图控制器的视图层次结构中?
  • 嗨。我在这里发布了一个与示例项目相关的问题:stackoverflow.com/questions/40428075/… 我找不到如何实现我在我的上下文中找到的解决方案(SLPagingView)。如果有人可以看一下并提供帮助,我将不胜感激,谢谢!
【解决方案2】:

升级到 IOS 11 时我遇到了这个问题。UICollectionView 布局不再显示单元格。通过添加行修复:

controller.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:controller animated:YES completion:nil];

不知道为什么这会修复它,但不给它一个演示样式真的会与演示控制器的底层布局混淆。

【讨论】:

    【解决方案3】:

    我也有同样的问题,当我尝试这个导航控制器时,它工作正常,但现在的 viewcontroller 不行。使用下面的视图控制器方法和 translatesAutoresizingMaskIntoConstraints 来解决这个问题。

    -(void) viewWillLayoutSubviews
    {
        [super viewWillLayoutSubviews];
    
        self.view.translatesAutoresizingMaskIntoConstraints = NO;
    }
    

    现在请告诉我您对此有任何顾虑。谢谢

    【讨论】:

      【解决方案4】:

      一个不同的解决方案 - 我发现如果从容器视图(而不是子视图)中的视图控制器呈现,如果你将 segue 从模态切换到显示,你的约束将在初始视图上保持不变,但仍然是动画就好像您以模态方式呈现并且仍然能够正确调用dismissViewController。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-26
        相关资源
        最近更新 更多