如何检测在 ios 中的一组自定义按钮中点击了哪个自定义按钮

How can I detect which custom button was tapped in a bank of custom buttons in ios

我有一组 6 个自定义按钮,我使用启用了用户交互的图像实现了这些按钮。我还为每个开关添加了一个标签。我在每个按钮上附加了一个点击手势识别器。我使用了中描述的技术 detect view was tapped 当我按下任何按钮时,我总是会得到手势附加到的最后一个按钮。这是代码。帮助将不胜感激。

import UIKit
class HomeViewController: UIViewController {
@IBOutlet var buttonImages: [UIImageView]!

var selectedOption = 0

@IBAction func tapped(sender: UITapGestureRecognizer) {
    let buttonImage = sender.view!
    println("Tag: \(buttonImage.tag) image: \(buttonImage)")
    selectedOption = (sender.view?.tag)!
    println("tapped: \(selectedOption)")
}
override func viewDidLoad() {
    super.viewDidLoad()


    let tapGestureRecognizer = UITapGestureRecognizer(target: self,
        action: "tapped:")
    tapGestureRecognizer.numberOfTouchesRequired = 1
    tapGestureRecognizer.numberOfTapsRequired = 1
    let x = UIImage(named:"TV normal.png") // replace with array

    var tag = 0
    for buttonImage in buttonImages {
        buttonImage.addGestureRecognizer(tapGestureRecognizer)
        buttonImage.image = x
        buttonImage.tag = tag
        tag++
    }
    // check
    for buttonImage in buttonImages {
        println("Tag: \(buttonImage.tag) image: \(buttonImage)")
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}

您的问题是因为您为每个 UIImage 附加了相同的 UITapGestureRecognizer,但一个手势只能同时附加到一个 UIView,即为什么你总是找回最后一个。

在您的情况下,您只需要为每个 UIImage 创建一个新的 UITapGestureRecognizer,并使用相同的目标/操作。这样,您的方法 tapped 就会起作用。