如何使用 iOS14 TabView 的 PageTabViewStyle() 页面滑动检测滑动并对其执行操作?

问题描述

使用 Swift5.3.2、iOS14.4.2、XCode12.4,

我正在为在 SwiftUI 中创建页面视图这一新的 iOS14 功能而苦苦挣扎。

一切正常,只是我无法检测到滑动的时刻!

我尝试使用 .onChange(selectionIndex),但是一旦我为 TabView 的 selectionIndex 创建了这个更改侦听器,滑动就会停止。不再顺畅。

struct MyView: View {

    @State var selectionIndex = 0

    var body: some View {

        TabView(selection: $selectionIndex) {
            ForEach(mediaList.paths.indices,id: \.self) { index in
               SomePageView(media: mediaList.paths[index])
            }
        }
        .tabViewStyle(PageTabViewStyle(indexdisplayMode: .never))
        .onChange(of: selectionIndex) { newIdx in
            
            customDotsService.selectedindex = newIdx  // because TabView's PageViewStyle does not have little dots that can be placed somewhere else on screen...
            sendCommand(index: newIdx) // some background task to send commands to other services...
        }
    }
}

即使我的 onChange(selectionIndex) { newIdx in ... } 完全为空,滑动也会停止并且内存进入循环。

这真的是一个很烦人的问题,我从 4 天起就一直在处理这个问题。

非常感谢任何帮助。

我需要从 Apple 获得什么:一个工作的 PageView,它具有正确的生命周期方法 .onAppear().onChange(selectionIndex) 及其可以放置在屏幕上任何位置的小点指示器。帮助宇宙,帮助我们在 SwiftUI 中得到这个。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...