单击按钮后立即执行 SwiftUI 按钮操作,而不是单击释放

Posted

技术标签:

【中文标题】单击按钮后立即执行 SwiftUI 按钮操作,而不是单击释放【英文标题】:SwiftUI button action as soon as button is clicked not on click release 【发布时间】:2020-08-08 14:52:49 【问题描述】:

我想在 SwiftUI 按钮中单击/点击按钮后立即调用该操作。我该如何实现?

【问题讨论】:

【参考方案1】:

这是一种可能的方法 - 使用自定义 ButtonStyle 注入自定义触地动作

使用 Xcode 12 / ios 14 测试

struct PressedButtonStyle: ButtonStyle 
    let touchDown: () -> ()
    func makeBody(configuration: Self.Configuration) -> some View 
        configuration.label
            .foregroundColor(configuration.isPressed ? Color.gray : Color.blue)
            .background(configuration.isPressed ? self.handlePressed() : Color.clear)
    

    private func handlePressed() -> Color 
        touchDown()           // << here !!
        return Color.clear
    


struct DemoPressedButton: View 
    var body: some View 
        Button("Demo") 
            print(">> tap up")    // << can be empty if nothing needed
        
        .buttonStyle(PressedButtonStyle 
            print(">> tap down")
        )
    

【讨论】:

以上是关于单击按钮后立即执行 SwiftUI 按钮操作,而不是单击释放的主要内容,如果未能解决你的问题,请参考以下文章

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

在单击保存或检索时,我需要帮助在一个表单中创建多个按钮而不执行表单操作

SwiftUI 在按钮上触发操作而无需用户单击按钮

单击应用程序按钮时立即运行音频文件 (Android)

使用SwiftUI。单击后,“我的滑块/侧面菜单”会启动新视图,但单击按钮,现在所有选项均为'dead'

程序运行后立即单击 PyQt 按钮