7

NIB を使用していた古いコードを、手動ビュー作成 ( loadView) と自動レイアウトを使用するように移行しています。ルート ビュー コントローラーは、自動レイアウトを使用するコンテナー VC (2 つの子を持つ) であり、NIB で指定されたレイアウトを持ち、まだ自動レイアウトを使用していないビュー コントローラーをモーダルに提示します。の後はすべて問題ありませんが、デリゲート呼び出しを介しpresentViewController:animated:completion:てモーダル ビューを閉じるとdismissViewControllerAnimated:completion:、表示ビューは、コンテンツが奇妙にシフトされ、タッチに反応しないという、奇妙で使用できない状態のままになります。

問題を再現するために最小限のテスト ケースを作成しようとしましたが、問題を再現できませんでした。

何が原因でしょうか?

4

4 に答える 4

9

translatesAutoresizingMaskIntoConstraints = NO;rootに設定していましたUIView。「最も外側」に表示されますUIView— ビュー階層のルートにあるスーパービューはデフォルトを使用する必要がありますtranslatesAutoresizingMaskIntoConstraints = YES。これを削除すると、すべてが期待どおりに機能しました。

于 2013-09-06T10:45:53.227 に答える
0

別の解決策 - コンテナー ビュー (サブビューではなく) 内のビュー コントローラーから表示する場合、セグエをモーダルから表示に切り替えると、制約は最初のビューで同じままですが、アニメーション化されているかのように変化することがわかりました。モーダルに表示されても、dismissViewController を正しく呼び出すことができます。

于 2016-06-08T06:24:48.157 に答える
0

私も同じ問題を抱えており、このナビゲーションコントローラーを試したところ、正常に機能していましたが、現在のビューコントローラーでは機能しませんでした。この問題を解決するには、translatesAutoresizingMaskIntoConstraints と共に以下のビュー コントローラー メソッドを使用します。

-(void) viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    self.view.translatesAutoresizingMaskIntoConstraints = NO;
}

何か気になる点がございましたら、今すぐ私にお任せください。ありがとう

于 2014-11-06T10:25:27.423 に答える