如何在 Swift 中使用 UIKit 注册多个点击按钮?
How to register more than one button tap using UIKit in Swift?
我正在试验按钮,我已经 运行 解决了一个可能很简单的问题。我有两个按钮和两个标签。
标签生成 "A" 或 "B" 的随机字符串值。如果选择了适当的按钮,我希望正确的标签消失。
我想出了下面的代码,但是我 运行 遇到了问题。如果字母相同,则点击相应按钮时两个标签将被隐藏。
我想我明白为什么会这样。这是因为我的代码是在按钮A被点击一次时执行的(我还没有开始按钮B,所以它什么也没做。)
所以我的问题是我如何要求 2 次点击?换句话说,如果 label_1 和 label_2 都显示为字符串 "A",我将如何要求用户点击 buttonA 两次?如果需要更多代码,请在评论中告诉我。
@IBOutlet weak var label_1: UILabel!
@IBOutlet weak var label_2: UILabel!
@IBOutlet weak var label_3: UILabel!
@IBOutlet weak var label_4: UILabel!
@IBOutlet weak var label_5: UILabel!
var visibleLetters = ["A", "B", "Z", "X"]
var text = "", text2 = "", text3 = "", text4 = "", text5 = ""
let aButton = "A", bButton = "B", zButton = "Z", xButton = "X"
var x = 0
override func viewDidLoad() {
super.viewDidLoad()
createRandomLetter(text, aSecondLetter: text2, aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func buttonA(sender: UIButton) {
if aButton == label_1.text {
label_1.hidden = true
label_1.tag += 1
}
else {
//play animation
print("play animation")
}
}
@IBAction func buttonB(sender: UIButton) {
if bButton == label_1.text {
label_1.hidden = true
}
}
@IBAction func buttonX(sender: UIButton) {
if xButton == label_1.text {
label_1.hidden = true
}
}
@IBAction func buttonZ(sender: UIButton) {
if zButton == label_1.text {
label_1.hidden = true
}
}
func createRandomLetter(individualLetter: String, aSecondLetter: String, aThirdLetter: String, aFourthLetter: String, aFifthLetter: String) {
let individuaLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aSecondLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aThirdLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aFourthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aFifthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))]
label_1.text = individuaLetter
label_2.text = aSecondLetter
label_3.text = aThirdLetter
label_4.text = aFourthLetter
label_5.text = aFifthLetter
}
func isCorrect() {
if aButton == label_1.text {
label_1.hidden = true
label_1.tag += 1
}
else if label_1.tag == 1 && aButton == label_2.text {
}
else {
//play animation
print("play animation")
}
}
}
好的,试着弄清楚你想做什么让我们举个例子。所以你有 4 个标签和 2 个按钮(A、B),当你单击一个按钮时,标签具有随机生成的 A、B 值,你需要检查该按钮是否具有与标签相同的文本,如果它是正确的,我们对 label2 做同样的事情,如果它不正确,我们会继续尝试。
一个合乎逻辑的方法是将标签与您的标签相关联(我想您已经在这样做了)并有一个时间变量来跟踪当前标签,例如
var temporal:String!
var current_tag:Int = 1
override func viewDidLoad() {
super.viewDidLoad()
createRandomLetter(text, aSecondLetter: text2,
aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)
temporal = label1.text
}
@IBAction func buttonZ(sender: UIButton) {
//Answer is correct
if zButton == temporal {
current_tag++
IsCorrect(current_tag)
}
}
func Iscorrect(tag:Int)
{
if(label2.tag == tag)
{
temporal = label2.text
}
else if(label3.tag == tag)
{
temporal = label2.text
}
else if(label4.tag == tag)
{
temporal = label2.text
}
}
类似的东西应该有用,我没有尝试过,因为我是从我的 Ipad 回答的,而且我无法访问我的笔记本电脑,但类似的东西应该完全有用,我怀疑我可以帮你XD
我正在试验按钮,我已经 运行 解决了一个可能很简单的问题。我有两个按钮和两个标签。
标签生成 "A" 或 "B" 的随机字符串值。如果选择了适当的按钮,我希望正确的标签消失。
我想出了下面的代码,但是我 运行 遇到了问题。如果字母相同,则点击相应按钮时两个标签将被隐藏。
我想我明白为什么会这样。这是因为我的代码是在按钮A被点击一次时执行的(我还没有开始按钮B,所以它什么也没做。)
所以我的问题是我如何要求 2 次点击?换句话说,如果 label_1 和 label_2 都显示为字符串 "A",我将如何要求用户点击 buttonA 两次?如果需要更多代码,请在评论中告诉我。
@IBOutlet weak var label_1: UILabel!
@IBOutlet weak var label_2: UILabel!
@IBOutlet weak var label_3: UILabel!
@IBOutlet weak var label_4: UILabel!
@IBOutlet weak var label_5: UILabel!
var visibleLetters = ["A", "B", "Z", "X"]
var text = "", text2 = "", text3 = "", text4 = "", text5 = ""
let aButton = "A", bButton = "B", zButton = "Z", xButton = "X"
var x = 0
override func viewDidLoad() {
super.viewDidLoad()
createRandomLetter(text, aSecondLetter: text2, aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func buttonA(sender: UIButton) {
if aButton == label_1.text {
label_1.hidden = true
label_1.tag += 1
}
else {
//play animation
print("play animation")
}
}
@IBAction func buttonB(sender: UIButton) {
if bButton == label_1.text {
label_1.hidden = true
}
}
@IBAction func buttonX(sender: UIButton) {
if xButton == label_1.text {
label_1.hidden = true
}
}
@IBAction func buttonZ(sender: UIButton) {
if zButton == label_1.text {
label_1.hidden = true
}
}
func createRandomLetter(individualLetter: String, aSecondLetter: String, aThirdLetter: String, aFourthLetter: String, aFifthLetter: String) {
let individuaLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aSecondLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aThirdLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aFourthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
aFifthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))]
label_1.text = individuaLetter
label_2.text = aSecondLetter
label_3.text = aThirdLetter
label_4.text = aFourthLetter
label_5.text = aFifthLetter
}
func isCorrect() {
if aButton == label_1.text {
label_1.hidden = true
label_1.tag += 1
}
else if label_1.tag == 1 && aButton == label_2.text {
}
else {
//play animation
print("play animation")
}
}
}
好的,试着弄清楚你想做什么让我们举个例子。所以你有 4 个标签和 2 个按钮(A、B),当你单击一个按钮时,标签具有随机生成的 A、B 值,你需要检查该按钮是否具有与标签相同的文本,如果它是正确的,我们对 label2 做同样的事情,如果它不正确,我们会继续尝试。
一个合乎逻辑的方法是将标签与您的标签相关联(我想您已经在这样做了)并有一个时间变量来跟踪当前标签,例如
var temporal:String!
var current_tag:Int = 1
override func viewDidLoad() {
super.viewDidLoad()
createRandomLetter(text, aSecondLetter: text2,
aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)
temporal = label1.text
}
@IBAction func buttonZ(sender: UIButton) {
//Answer is correct
if zButton == temporal {
current_tag++
IsCorrect(current_tag)
}
}
func Iscorrect(tag:Int)
{
if(label2.tag == tag)
{
temporal = label2.text
}
else if(label3.tag == tag)
{
temporal = label2.text
}
else if(label4.tag == tag)
{
temporal = label2.text
}
}
类似的东西应该有用,我没有尝试过,因为我是从我的 Ipad 回答的,而且我无法访问我的笔记本电脑,但类似的东西应该完全有用,我怀疑我可以帮你XD