SwiftUI:在横向列表中点击导航栏不会将列表滚动到顶部

Posted

技术标签:

【中文标题】SwiftUI:在横向列表中点击导航栏不会将列表滚动到顶部【英文标题】:SwiftUI: Tapping navigation bar in landscape list does not scroll list to top 【发布时间】:2021-03-09 21:41:59 【问题描述】:

还有其他人遇到过这种不正确的行为吗?

    使用以下代码创建应用:
import SwiftUI

struct ContentView: View 
    var body: some View 
        NavigationView 
            List 
                ForEach (0..<100, id:\.self)  index in
                    Text("Hello, \(index)!")
                        .padding()
                
            
            .navigationBarTitle("Test", displayMode: .inline)
        
    

    将列表滚动到最初不可见的某个项目。

    点击导航栏标题

结果:列表滚动到顶部。

    在 iPhone 的横向模式下尝试相同的操作。

结果:列表没有滚动到顶部

我已就此提交反馈 #FB9035540。只是想知道是否有其他人经历过这种情况以及他们是如何解决的?

【问题讨论】:

【参考方案1】:

实际上,点击导航栏的标题在纵向横向都没有效果。您遇到的是点击状态栏时发生的行为。

来自documentation:

滚动到顶部手势是点击状态栏。当用户做出此手势时,系统会要求最靠近状态栏的滚动视图滚动到顶部。

导航栏的标题和状态栏非常接近,所以你可能认为是标题在做滚动。

在横向模式下,没有状态栏,所以手势不起作用。

【讨论】:

谢谢!不错的收获。

以上是关于SwiftUI:在横向列表中点击导航栏不会将列表滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中滑动列表时隐藏导航栏

带有列表的 SwiftUI 自定义导航栏

SwiftUI LandScape 导航顶栏不会隐藏

向后滑动失败时,SwiftUI 导航栏项目变得混乱

在 UISplitViewController 中使用 SwiftUI 列表侧边栏

iOS 16 中 SwiftUI 4.0 轻松实现导航栏标题可编辑