在 SwiftUi 中禁用默认按钮单击动画

Posted

技术标签:

【中文标题】在 SwiftUi 中禁用默认按钮单击动画【英文标题】:Disable default button click animation in SwiftUi 【发布时间】:2020-05-04 13:31:49 【问题描述】:

如何在 SwiftUI 和 Swift 5 中禁用默认的按钮点击动画?我尝试将.animation(.nil) 添加到按钮,没有任何更改。

我知道您可以执行以下操作:

Button(action: )  Capsule() 
.buttonStyle(NoAnim())

struct NoAnim: ButtonStyle 
func makeBody(configuration: Self.Configuration) -> some View 
    configuration.label

有人知道更聪明的方法吗?

【问题讨论】:

【参考方案1】:

如果我正确理解了你的问题,那么最好只使用

Capsule()
  .onTapGesture 
    // << action here !!
  

【讨论】:

通过 Voice Over 或其他可访问性选项将此 Capsule 识别为按钮的用户吗?【参考方案2】:

ios 13.x,斯威夫特 5。

所以你想要一些可点击的东西,而不是按钮。只需使用带有 onTapGesture 的标签,然后您就可以添加任何您喜欢的动画。

您也可以像这样使用 onDrag 手势。这将在您触摸它时立即更新dragLocation。所以它就像触摸事件。它也没有任何喜欢它的动画。如果您愿意,可以添加。

Text("Hello World")
.accessibility(label: Text("Button"))
.gesture(
    DragGesture(minimumDistance: 5, coordinateSpace: .global)
        .onChanged  value in
          self.dragLocation = value.location
        
        .onEnded  _ in
          self.dragLocation = .zero
        
)

【讨论】:

是否通过 Voice Over 或其他可访问性选项将此标签识别为按钮的用户? 卢卡斯。您可以将许多标签添加到代码中以使其更易于访问,它们是您需要特别添加的选项,带有 .accessability 修饰符。我在上面测试了画外音并编辑了代码以在您传递文本时宣布一个按钮。但在相关/不同的说明中,使用本网站的最佳方式是发布个人问题。您发布的帖子数量没有限制。要获得最佳答案,请在特定帖子中询问有关可访问性的特定问题。

以上是关于在 SwiftUi 中禁用默认按钮单击动画的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 SwiftUI 的默认行为?

SwiftUI - 奇怪的动画

按钮上的 SwiftUI 动画图像

SwiftUI 菜单按钮最初显示为禁用

SwiftUI ButtonStyle scaleEffect 动画按钮位置变化

如何在 SwiftUI 中禁用位置动画?