xcodeswiftuitabview

SwiftUI 2.0 TabView disable swipe to change page


I have a TabView thats using the swiftUI 2.0 PageTabViewStyle. Is there any way to disable the swipe to change pages?

I have a search bar in my first tab view, but if a user is typing, I don't want to give the ability to change they are on, I basically want it to be locked on to that screen until said function is done.

Here's a gif showing the difference, I'm looking to disable tab changing when it's full screen in the gif. https://i.sstatic.net/20qnW.jpg


Solution

  • Try something like the following (tested with some stub code). The idea is to block tab view drag gesture when some condition (in you case start editing) happens

    @State var isSearching = false
    
    // ... other code
    
    TabView {
        // ... your code here
    
        Your_View()
           .gesture(isSearching ? DragGesture() : nil)  // blocks TabView gesture !!
    }
    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))