Avatar
Avatar
kajitani
こんばんは!iOS16.4のアップデート内容に関して質問させてください! // SwiftUI.View struct TestView: View { var body: some View { ScrollView { VStack { TextField("", text: .constant("")) Color.red .frame(height: 1000) Color.blue .frame(height: 200) } } } } // こちらのUIViewControllerを表示する final class TestViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let content = UIHostingController(rootView: TestView()).view! view.addSubview(content) content.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ content.topAnchor.constraint(equalTo: view.topAnchor), content.leadingAnchor.constraint(equalTo: view.leadingAnchor), content.trailingAnchor.constraint(equalTo: view.trailingAnchor), content.bottomAnchor.constraint(equalTo: view.bottomAnchor) ]) } } 上記のようなコードでUIViewControllerを表示した際、 iOS16.3.1までだとキーボード表示中でも青色のColorが表示されるまでスクロールできたのですが、 iOS16.4以降だとキーボード表示中に青色のColorが表示されるところまでスクロールできないようになっています。(キーボードが表示される階層が変更されている?) こちらはiOS16.4のアップデートにより挙動が変わったと思っているのですが、意図した変更で認識あっていますでしょうか?? 意図せぬ変更で、今後元に戻すことがあるかどうかが気になっています…! また、この事象から、iOS16.4のアップデートではUIの制御に関しての変更もあったと認識したのですが、他にも挙動が変わりうるような変更がありそうかが分かりましたら回答いただけましたら嬉しいです🙇 (edited)
Deleted User 5/17/2023 2:09 PM
この現象に関してはaddChild, didMoveが抜けてるのが原因な気がします。 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let viewController = UIHostingController(rootView: TestView()) view.addSubview(viewController.view) addChild(viewController) viewController.didMove(toParent: self) viewController.view.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ viewController.view.topAnchor.constraint(equalTo: view.topAnchor), viewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), viewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), viewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) ]) } }
👀 1