按下一个 UIButton 会触发另一个 UIButton:我不希望这种情况发生

Posted

技术标签:

【中文标题】按下一个 UIButton 会触发另一个 UIButton:我不希望这种情况发生【英文标题】:Pressing one UIButton triggers another UIButton: I don't want this to happen 【发布时间】:2017-05-27 16:54:43 【问题描述】:

我是 swift 和 xcode 的新手,在创建这个带有圈数的简单计时器应用程序时遇到了一些麻烦。当我按下“圈”按钮时,也会触发“重置”按钮。谁能帮我解决这个问题?这些按钮彼此相邻,但我认为这与它没有任何关系。另外,我还注释掉了整个 lap 函数,同样的事情也发生了。

 @IBAction func Reset(_ sender: Any)

    min = 0
    sec = 0
    mil = 0
    timer.invalidate()
    createLabel()
    var i = 0
    while i < list.count
    
        list[i].removeFromSuperview()
        i = i + 1
    
    running = false





@IBAction func Lap(_ sender: UIButton)


    let word = UILabel()
    list.append(word)

    word.font = UIFont.systemFont(ofSize: 50)
    word.text = make()
    word.sizeToFit()

    word.frame.origin = CGPoint(x:187.5,y:700)
    self.Scroll.addSubview(word)
    word.center = CGPoint(x:187,y:last)
    last = last + 50


    Scroll.contentSize.height = Scroll.contentSize.height + 50


【问题讨论】:

另外,我还注释掉了整个lap函数,同样的事情发生了 听起来您将 2 个@IBActions 连接到您的膝上按钮。按住 Control 并单击您的 Lap 按钮并删除与 Reset() 的连接。 哇,这很简单,非常感谢! 函数和变量名(lapresetscrollView)应该以小写字母开头。您问题中的代码不会导致这种情况发生。请您显示任何使用您提到的按钮更新/执行任何操作的代码。如果您可以添加笔尖的屏幕截图,那也会很有帮助。 :-) 我猜你复制了重置按钮来制作你的圈按钮。如果在复制按钮时连接了 @IBAction,那么新按钮也会获得该连接。 【参考方案1】:

听起来您将两个@IBActions 连接到您的Lap 按钮。 控制-单击故事板中的Lap按钮,然后单击操作旁边的x删除与Reset()的连接。

我猜你复制了 Reset 按钮来制作你的 Lap 按钮。如果在复制按钮时连接了@IBAction,则新按钮也将获得该连接。因此,如果您向新按钮添加连接,它不会替换上一个操作,而是成为第二个操作。

【讨论】:

【参考方案2】:

我想你可能已经用相同的 IBAction 功能连接了两个按钮。在两个 IBAction 函数中创建一个 print 语句,看看会发生什么。或者,删除两个 IBAction 函数(以及从情节提要中引用出口)并重新连接。另外,检查连接检查器(故事板的右上角),看看你是否有任何死的插座。

【讨论】:

【参考方案3】:

开始调试,您将找到解决方案。从第一点开始。就像在故事板中添加按钮,然后将它们连接到视图控制器。我认为您已将一个按钮连接到多个操作。

【讨论】:

以上是关于按下一个 UIButton 会触发另一个 UIButton:我不希望这种情况发生的主要内容,如果未能解决你的问题,请参考以下文章

如何在按下其他 UIButton 时触发 UIButton 的“按下效果”或“突出显示效果”

iOS - 如何相对于另一个添加一个 UIButton?

如何在手指从1按钮拖动到下一个按钮时触发UIButton事件

按下 UIButton 时带参数的触发功能

UIButton 从 Core Data 增加一个数组,从另一个类完成

第一个 UIButton 触发同一视图的另一个 UIbutton 事件