如何检测在 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
就会起作用。
我有一组 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
就会起作用。