[英]How to register more than one button tap using UIKit in Swift?
我正在嘗試按鈕,但遇到了一個可能很簡單的問題。 我有兩個按鈕和兩個標簽。
標簽生成“ A”或“ B”的隨機字符串值。 如果選擇了適當的按鈕,我希望正確的標簽消失。
我想出了以下代碼,但是遇到了問題。 如果字母相同,則在點擊相應按鈕時,兩個標簽都將被隱藏。
我想我知道為什么會這樣。 這是因為我的代碼是在一次按一下buttonA時執行的(我尚未在按鈕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幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.