🐙

SwiftUIのPickerで選択肢が選べない/スクロールが適切にできない

に公開

かなり時間を費やして原因がわかったので、メモ.
ググっても全く出なかったので、原因がわかるまでだいぶ彷徨った...

症状 / Problem

SwiftUIのPickerの選択肢がなぜか実機だと

  • 適切に選択できず
  • スクロールもできず
  • 選択しても値が変わらない
    と全く動かない状態.
    (The options in SwiftUI’s Picker cannot be selected properly on the actual device, cannot be scrolled, and the value does not change even when selected.)

原因 / Cause

不確かではあるが、おそらく下記

おそらくの原因 / Main Cause

    @StateObject private var viewModel = ViewModel()

上記のViewModelの中で頻繁にCapture画像を取り込んで、画像処理をしている.
ViewModelの中ではPublishedの変数が多く、高頻度で更新されている.
この更新が行われていることで、PickerのMenuの選択肢がキャンセルされている様子.

対策

Pickerが表示される時は、上記の更新を停止させる。

Discussion