SwiftUI中禁用navigationTransitionStyle缩放转场的交互式下拉关闭方法
我在SwiftUI应用中使用新的navigationTransitionStyle(.zoom(id, namespace))实现从预览视图到详情视图的缩放转场,但遇到了一个问题:详情页里有一个支持吸附的ScrollView,当用户尝试滑动来最小化视图时,不小心就会把整个详情页关掉。我想实现的效果是,禁用这种新转场风格自带的“下拉关闭”行为。
尝试过的解决方案
- 我试过给详情视图添加
.highPriorityGesture(DragGesture()),确实能阻止下拉关闭,但同时也把垂直方向的主ScrollView给禁用了,这不行。我也尝试过通过代码逻辑来动态应用这个手势,但一直没成功。 .interactiveDismissDisabled(true)对navigationTransitionStyle完全不起作用。.navigationBarBackButtonHidden(true)也没法禁用这种新缩放转场的下拉关闭行为(之前旧的滑动转场里这个方法是管用的)。- 按照建议设置
.dragGesture(minimumDistance: 15),倒是能正常用ScrollView了,但还是挡不住下拉关闭的行为。 - 用
.highPriorityGesture(LongPressGesture(minDuration: 0))和用DragGesture的效果一样,既禁用了下拉关闭,也把ScrollView给搞废了。
我现在开始怀疑是不是根本没法禁用这个手势,但如果有人知道方法,或者有能让我在使用这个新转场的同时还能正常用ScrollView的变通方案,我会非常感激!
更新
- 我试着用UIScrollView代替SwiftUI的ScrollView,本来以为
.highPriorityGesture不会影响它,但结果还是覆盖了滚动手势。
备注:内容来源于stack exchange,提问作者Brian.Masse
相关产品推荐
相关产品推荐

