そのうちAppleさんが直してくれると思いますが、他にも困っている人が居たようなので一応まとめ。

現象

Xcode11.2でビルドしたWebViewアプリをiOS13.2で実行した際、アプリをバックグラウンドに回したりViewControllerを再表示したりするとWebViewがフリーズする。

フリーズ時のエラーは無し。

原因

iOS13特有のバグのようで、↓のようにWebViewまたはその親Viewにconstraintを指定していると発生する模様。

ベタすぎるObjective-Cでちょい恥ずかしい。いぢめないでください。

(※同じような実装のアプリでも発生するものとしないものがあったので、他にも条件がある模様だが、詳細は不明)

            parentView.clipsToBounds = NO;
            parentView.translatesAutoresizingMaskIntoConstraints = NO;
            [parentView.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:top].active = YES;
            [parentView.leftAnchor constraintEqualToAnchor:self.view.leftAnchor constant:left].active = YES;
            [parentView.widthAnchor constraintEqualToConstant:width].active = YES;
            [parentView.heightAnchor constraintEqualToConstant:height].active = YES;
            [parentView layoutIfNeeded];

            [parentView addSubview:webView];
            webView.translatesAutoresizingMaskIntoConstraints = NO;
            [webView.topAnchor constraintEqualToAnchor:parentView.topAnchor constant:0.f].active = YES;
            [webView.bottomAnchor constraintEqualToAnchor:parentView.bottomAnchor constant:0.f].active = YES;
            [webView.leftAnchor constraintEqualToAnchor:parentView.leftAnchor constant:0.f].active = YES;
            [webView.rightAnchor constraintEqualToAnchor:parentView.rightAnchor constant:0.f].active = YES;
            [webView layoutIfNeeded];

対策

親Viewを消してWebViewだけにしてもフリーズ、WebView側のconstraintを消してもフリーズ。

親Viewを無くしつつ、constraintを使わないようにしたらフリーズしなくなった。

もはや怪奇現象の類ですな\(^o^)/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*