停止重复 SwiftUI 的动作的方法

Posted

技术标签:

【中文标题】停止重复 SwiftUI 的动作的方法【英文标题】:Way to stop action repeating SwiftUI 【发布时间】:2021-02-17 21:48:25 【问题描述】:

我在测验中使用以下代码,一旦用户回答问题,就会弹出警报。然后他们可以选择转到下一个问题或再次查看该问题,然后在一段时间后出现下一个问题。

我遇到的问题是此操作会继续到下一个问题并在一段时间后跳过它,不允许用户有时间回答它!在以下问题中停止自动重复动作的最佳方法是什么?

    func nextTapped() 
        DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) 
            nextQuestion()
        
    

    func continueTapped() 
        nextQuestion()
    
 .alert(isPresented: $showingFeedback) 
                    Alert(
                        title: Text(scoreTitle),
                        message: Text(selectedQuestion!.feedback),
                        primaryButton: .default(Text("Review"), action: nextTapped),
                        secondaryButton: .default(Text("Continue"), action: continueTapped)
                    )
                

【问题讨论】:

我在这里没有看到任何重复的代码。你能展示更多你的代码吗?理想情况下,一个可重现的例子? 请添加Minimal, Reproducible Example 或更好地解释您的问题。 【参考方案1】:

我发现该函数传递到下一个问题。所以我回答了第一个问题,按评论,10 秒后它会自动转到下一个问题。在我按下任何按钮之前,我发现下一个问题也会发生这种情况。我发现在代码中添加 ' -> Void ' 会阻止它。

func nextTapped() -> Void 
    DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) 
        nextQuestion()
    


func continueTapped() 
    nextQuestion()

【讨论】:

以上是关于停止重复 SwiftUI 的动作的方法的主要内容,如果未能解决你的问题,请参考以下文章

按返回键“不”关闭软件键盘 - SwiftUI

更改选项卡式视图栏颜色 SwiftUI

Catalyst 'SwiftUI.AccessibilityNode' 不是已知的可序列化元素

SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?

在没有 NumberFormatter 的情况下停止 TextField 中的字符重复

SwiftUI捕获键盘提交动作在iOS15之前和之后的兼容实现