環境
Xcode 14.2
Swift 5.7
iOS 15 & 16
事象
以下のようにSearchBar(searchable)とPull-to-refresh(refreshable)を両方付けると、SearchBar選択時に下スワイプしてもインジケータが表示されません。ただ、refreshableは呼ばれています。
TestView
struct TestView: View {
@State var searchText: String = ""
var body: some View {
NavigationView {
List {
Text("hoge1")
Text("hoge2")
Text("hoge3")
Text("hoge4")
Text("hoge5")
}
.searchable(text: $searchText)
.refreshable {
print("refreshable")
}
}
}
}

対応
navigationBarTitleDisplayModeをinline、navigationBarDrawerDisplayModeをalwaysで指定したらインジケータが表示されるようになりました。
TestView
struct TestView: View {
@State var searchText: String = ""
var body: some View {
NavigationView {
List {
Text("hoge1")
Text("hoge2")
Text("hoge3")
Text("hoge4")
Text("hoge5")
}
- .searchable(text: $searchText)
+ .navigationBarTitleDisplayMode(.inline)
+ .searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))
.refreshable {
print("refreshable")
}
}
}
}
