Search code examples
uiviewcontrollerautolayout

View unusable after dismissViewControllerAnimated:completion:


I'm migrating older code that used NIBs to use manual view creation (loadView) and Auto Layout. The root view controller is a container VC (with 2 children) that uses auto layout and modally presents a view controller that has its layout specified in a NIB and does not yet use auto layout. All is fine after presentViewController:animated:completion:, but when the modal view is closed with dismissViewControllerAnimated:completion: via delegate call, the presenting view is left in a strange, unusable state where the content is weirdly shifted and does not react to touch.

I have tried to create minimal test case to reproduce the problem, but I've failed to reproduce the issue.

What could be causing this?


Solution

  • I was setting translatesAutoresizingMaskIntoConstraints = NO; on my root UIView. It appears the "outermost" UIView — the superview at the root of your view hierarchy must use the default translatesAutoresizingMaskIntoConstraints = YES. Once I've removed this, everything worked as expected.