You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS多按钮识别实现:如何判断已按下的目标按钮?

解决方案:识别之前点击的按钮

这事儿好办,咱们一步步来实现你要的功能:

1. 先添加一个变量记录最后点击的按钮

在你的ViewController类里,添加一个私有可选变量,用来存储用户最后点击的那三个按钮之一:

class ViewController: UIViewController {
    // 用来存储最后被点击的目标按钮
    private var lastTappedButton: UIButton?
    
    // 你的其他代码(IBOutlet、其他方法等)...
}

2. 更新三个按钮的点击事件

修改你已有的三个按钮的@IBAction方法,每次点击时把当前按钮赋值给上面的变量:

@IBAction func btn1(_ sender: UIButton) {
    lastTappedButton = sender
    // 这里保留你原来btn1的业务逻辑(如果有的话)
}

@IBAction func btn2(_ sender: UIButton) {
    lastTappedButton = sender
    // 这里保留你原来btn2的业务逻辑(如果有的话)
}

@IBAction func btn3(_ sender: UIButton) {
    lastTappedButton = sender
    // 这里保留你原来btn3的业务逻辑(如果有的话)
}

3. 完善识别按钮的点击事件

现在给你的identifyWhichPressed方法添上逻辑,判断并打印之前点击的按钮:

@IBAction func identifyWhichPressed(_ sender: UIButton) {
    // 先检查有没有点击过目标按钮
    guard let tappedButton = lastTappedButton else {
        print("还没点击过三个按钮中的任何一个哦!")
        return
    }
    
    // 这里提供几种判断方式,选适合你的就行:
    
    // 方式一:通过按钮的Tag识别(需要先在Storyboard/代码里给三个按钮设置Tag:1、2、3)
    switch tappedButton.tag {
    case 1:
        print("之前点击的是按钮1")
    case 2:
        print("之前点击的是按钮2")
    case 3:
        print("之前点击的是按钮3")
    default:
        print("未知按钮")
    }
    
    // 方式二:直接比较按钮实例(需要给三个按钮添加IBOutlet引用,比如@IBOutlet weak var btn1: UIButton!)
    /*
    if tappedButton === btn1 {
        print("之前点击的是按钮1")
    } else if tappedButton === btn2 {
        print("之前点击的是按钮2")
    } else if tappedButton === btn3 {
        print("之前点击的是按钮3")
    } else {
        print("未知按钮")
    }
    */
    
    // 方式三:通过按钮标题识别(如果三个按钮的title唯一的话)
    /*
    switch tappedButton.title(for: .normal) {
    case "按钮1":
        print("之前点击的是按钮1")
    case "按钮2":
        print("之前点击的是按钮2")
    case "按钮3":
        print("之前点击的是按钮3")
    default:
        print("未知按钮")
    }
    */
}

小提示

  • 如果用Tag的方式,记得在Storyboard里选中对应按钮,在右侧属性面板的Tag栏设置数值(比如btn1设为1,btn2设为2,以此类推)。
  • 如果用实例比较的方式,要确保你已经给三个按钮添加了IBOutlet关联(在Storyboard里按住Ctrl从按钮拖到ViewController代码里生成)。
  • 这个逻辑会记录最后一次点击的按钮,如果用户多次点击不同按钮,识别的是最新的那一次。

内容的提问来源于stack exchange,提问作者user9683424

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:18:29