Кнопка UIB не подсвечивает или не запускает код при нажатии - PullRequest
0 голосов
/ 14 февраля 2020

Я настраиваю 26 кнопок, добавляю их в качестве подпредставлений в letterButtonLabel и добавляю их в массив letterButtons.

for row in 0..<6 {
            for column in 0..<5 {
                if row == 5 && column > 0 { continue }

                let letterButton = UIButton(type: .system)
                letterButton.titleLabel?.font = UIFont.systemFont(ofSize: 36)
                letterButton.setTitle("O", for: .normal)
                letterButton.addTarget(self, action: #selector(letterTapped), for: .touchUpInside)

                let frame = CGRect(x: width * column, y: height * row, width: width, height: height)
                letterButton.frame = frame

                letterButtonLabel.addSubview(letterButton)

                letterButtons.append(letterButton)
            }
        }

После этого я назначаю букву каждой кнопке с помощью массива letterButtons.

var index = 0

        for letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" {
             letterButtons[index].setTitle("\(letter)", for: .normal)
             index += 1
        }

Затем я вручную добавляю ограничения макета.

Вот функциональные возможности для каждой кнопки:

@objc func letterTapped(_ sender: UIButton) {
        // check the letter and react
        sender.isHidden = true

        guard let word = currentWord else { return }
        guard var charactersArray = currentWordField.text?.components(separatedBy: "") else { return }
        guard let originalCurrentWordField = currentWordField.text else { return }

        for (index, letter) in word.enumerated() {
            let strLetter = String(letter)

            if strLetter == sender.titleLabel?.text {
                 charactersArray[index] = strLetter
            }
        }

        currentWordField.text = charactersArray.joined()

        if currentWordField.text == originalCurrentWordField {
            livesLeft -= 1
        }

        if wordBank.contains(word) {
            // you got it! reset letters
            level += 1

            let ac = UIAlertController(title: "Good job!", message: nil, preferredStyle: .alert)

            let action = UIAlertAction(title: "Continue", style: .default, handler: resetForNextLevel)
            ac.addAction(action)

            present(ac, animated: true)
        }


        if livesLeft == 0 {
            let ac = UIAlertController(title: "Game Over", message: nil, preferredStyle: .alert)

            let action = UIAlertAction(title: "Restart", style: .default, handler: resetForNextLevel)

            ac.addAction(action)
            present(ac, animated: true)
        }
    }

(добавление всего на всякий случай)

Моя кнопка не выделяется и не щелкает. Здесь есть что-нибудь, что может объяснить проблему? Мне любопытно, о распространенных ошибках.

1 Ответ

1 голос
/ 14 февраля 2020

UILabel имеет по умолчанию userInteractionEnabled = false. Установка true должна решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...