【问题标题】:Hold down label value increment button in Swift 3 on xcode 8.3.3在 xcode 8.3.3 上的 Swift 3 中按住标签值增量按钮
【发布时间】:2017-06-27 05:33:14
【问题描述】:

我有一个简单的应用程序,可以进行一些概率计算。我有一个加号按钮,一次将标签值增加 0.1%。如果我按住加号按钮,我想要做的是更快地增加它。我搜索的所有代码都是旧版本的 Swift 或 Xcode,我不知道该怎么做!

目前,我已经返回到一个功能正常的应用程序,它带有一个名为 plusButton@IBAction func,它只为名为 preAssessmentProbability 的标签 @IBOutlet 添加了 0.1%。

如果有人能帮助告诉我如何保留此功能,但添加按住plusButton 以更快地增加preAssessmentProbability 标签的功能,我将不胜感激(如果您能帮助告诉我,将不胜感激如何设置这个速率)。

【问题讨论】:

  • 欢迎来到 Stack Overflow!这是一个Related 可能有帮助的问题,但不幸的是使用的是旧版本的swift。不过你可以看看它是否有帮助。
  • 谢谢Xcoder先生;我确实看到了这个,并认为它做的比我想要的要多,但我可以尝试实现它,看看它是否会起作用。

标签: swift button


【解决方案1】:

这里是实现。首先,请确保您以这种方式连接按钮的三个操作。

那么你的代码应该是这样的

@IBAction func buttonUpInside(_ sender: Any) {
    self.buttonUp()
}

@IBAction func buttonUpOutside(_ sender: Any) {
    self.buttonUp()
}

@IBAction func buttonTouchDown(_ sender: Any) {
    self.buttonDown()
}

func buttonDown() {
    increaseSpeed()
    holdTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector:#selector(increaseSpeed), userInfo: nil, repeats: true)
}

func buttonUp() {
    speed = 1.0
    holdTimer.invalidate()
    addPercentTimer.invalidate()
}

func increaseSpeed(){
    if speed != 1 {
        addPercentTimer.invalidate()
    }
    if speed > 0 {
        speed -= 0.2 //make it faster!
    }
    addPercentTimer = Timer.scheduledTimer(timeInterval: speed, target: self, selector:#selector(addPercent), userInfo: nil, repeats: true)
}

func addPercent(){
    preAssessmentProbability += 0.1
}

【讨论】:

  • 谢谢!不幸的是,我无法让它运行。我已将 holdTimer 和 addPercentTimer 声明为 Timer() 对象。我还为 plusButton 创建了一个 IBOutlet(我不知道这是否需要)。我还修改了 addPercent() 函数,因为 preAssessmentProbability 是一个标签。毕竟,我只收到一个关于您第一行的错误:plusButton.addTarget ... for:.touchDown。该错误是“预期声明”,这让我感到困惑!我以为它是在 IBAction 或 IBOutlet 中声明的!你能给我任何指点吗?!谢谢+++
  • @RichardHaydon 嘿。我的方法是添加按钮侦听器。您正在使用 IBActions?意味着故事板连接?如果是这样,我可以更新我的答案
  • @FangminNing - 是的,我正在使用 IBActions。我实际上不知道按钮监听器是什么,所以我会查一下!我从星期一开始才开始编码!按钮监听器会更好吗?不过,如果你能给我 IBActions 的解决方案,对我来说可能会更容易。非常感谢您的帮助!
  • @RichardHaydon 对不起,忘了听众,我说的是 IBAction。所以 IBAction 是故事板动作和代码之间的连接。另一方面,添加目标是一种以编程方式获取按钮单击操作的方法。让我更新我的答案来做故事板 IBAction
  • 感谢@方明宁!我已向 TouchUpInside 添加了一个增量,因此它具有原始功能。唯一的问题是它现在在 2 秒的 timeInterval 增加 18 次后崩溃,并且在 1 秒的 timeInterval 增加 8 次后崩溃。我想知道这是否与速度增加有关?你让我比我自己更进一步!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
相关资源
最近更新 更多