在 macOS SwiftUI 中模拟按钮点击?

Posted

技术标签:

【中文标题】在 macOS SwiftUI 中模拟按钮点击?【英文标题】:Simulate button click in macOS SwiftUI? 【发布时间】:2020-06-07 02:39:58 【问题描述】:

我在 SwiftUI 中构建了一个简单的 macOS 模式对话框,它从用户那里获取一些文本:

struct
OpenLocationView : View

    @State private var location: String = ""

    var body: some View
    
        VStack
        
            HStack
            
                Text("Location:")
                TextField("https://", text: $location)  self.openLocation() 
            

            HStack
            
                Spacer()
                Button("Cancel")  self.dismiss() 
                Button("Open")  self.simulateClick() 
            
        
        .padding()
        .frame(minWidth: 500.0)
    

如果用户按下回车键或回车键,我想在关闭对话框之前简要模拟点击默认按钮。我将如何在 SwiftUI 中执行此操作?

【问题讨论】:

【参考方案1】:

其实你已经差不多完成了,见 cmets inline

...
    HStack
    
        Text("Location:")
        TextField("https://", text: $location)  
           // this is onCommit: called on Return or Enter
           self.open() 
        
    

    HStack
    
        Spacer()
        Button("Cancel")  self.dismiss() 
        Button("Open")  self.open() 
    

...

func open() 
    self.openLocation() 
    self.dismiss()

【讨论】:

嗯,你似乎没有展示如何模拟按钮点击。我的意思是我希望打开按钮在关闭对话框之前短暂闪烁蓝色。 @Rick 查看 ButtonStyle 协议 @user3441734 好像你有一个很好的答案!如果您在自己对这个问题的回答中详细说明了一些示例代码,它可能会被接受!

以上是关于在 macOS SwiftUI 中模拟按钮点击?的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中使用系统图标和 macOS 作为按钮

SwiftUI 2.0 在 macOS 上禁用窗口的缩放按钮

在 MacOS 上的 SwiftUI 中查找点击位置

如何在 SwiftUI 生命周期中删除 macOS 中的最大化、最小化和关闭按钮?

让我们在 MacOS AppKit 上的 SwiftUI 中使用所有可用宽度的按钮

SwiftUI @State 在放入 NavigationView(macOS 应用程序)时仅更新一次