iOS 18でTextEditorに帯状の色が表示される問題について

iOS18でfeather の投稿画面を表示すると、TextEditorの部分に帯状に色がついているという報告がありました。

確認したところ、以下のような状態になっていました。

帯が入っている状態にスクリーンショット

※ この問題は特定のViewの使い方をした場合にのみ発生するため、全員発生するわけではありません。

原因調査

原因を調べるために、SwiftUI-Introspectを使用して実際のインスタンスの状態を確認しました。

※ なお、XcodeのDebug View Hierarchyではなぜか内容が表示されませんでした。

よく調べてみると、iOS 18では backgroundColor が設定されていることがわかりました。このため、背景色が表示され、帯状の色が入ってしまったようです。

iOS 17.6.1 の状態

(lldb) po textView
<SwiftUI.TextEditorTextView: 0x101862200; baseClass = UITextView;
frame = (0 0; 358 0); text = ''; clipsToBounds = YES; autoresize = W+H;
gestureRecognizers = <NSArray: 0x301b34de0>; layer = <CALayer: 0x3017af8c0>;
contentOffset: {0, 0}; contentSize: {358, 39}; adjustedContentInset: {0, 0, 0, 0}>

iOS18 の状態

(lldb) po textView
<SwiftUI.TextEditorTextView: 0x104420c00; baseClass = UITextView;
frame = (0 0; 370 0); text = ''; clipsToBounds = YES; autoresize = W+H;
gestureRecognizers = <NSArray: 0x600000ef9170>;
backgroundColor = <UIDynamicSystemColor: 0x60000176be40; name = systemBackgroundColor>; 
layer = <CALayer: 0x600000481c80>; 
contentOffset: {0, 0}; contentSize: {370, 39}; adjustedContentInset: {0, 0, 0, 0}>

修正方法

この問題は、該当のTextEditorに対して .scrollContentBackground(.hidden) を設定することで、背景色を非表示にし、問題を解決することができました。

修正後のスクリーンショット