Мой UIButton перестает быть активным после того, как я оживил его с помощью преобразования - PullRequest
0 голосов
/ 09 июня 2019

У меня есть пользовательский интерфейс, в котором у меня есть несколько элементов, которые я хочу анимировать после нажатия кнопки «registerSerialNumberButton».

Сама кнопка тоже анимируется и получает новый объект .addtarget, но проблемав том, что кнопка становится не щелкаемойЭто видно, и я могу изменить все свойства визуально.Но больше нельзя нажимать на кнопку.

Я пытался установить большее значение альфа-канала, но это не сработало.Я также попытался переместить рамку кнопки вверх, но это, похоже, тоже не влияет на кликабельность.

Я также попытался добавить .isEnabled = true ... не сработало

это создание кнопки

    let registerSerialNumberButton: UIButton = {
        let button = UIButton(type: .system)
        button.setTitle("Register my nano", for: .normal)
        button.backgroundColor = UIColor.rgb(red: 17, green: 154, blue: 237)
        button.layer.cornerRadius = 10
        button.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .medium)
        button.setTitleColor(UIColor.white, for: .normal)
        button.addTarget(self, action: #selector(startEditingSerialNumberInput), for: .touchUpInside)
        button.isEnabled = true
        button.constrainHeight(constant: 60)
        return button
    }()

эта функция вызывается при первом нажатии

    @objc func startEditingSerialNumberInput() {
        animateRegisterFormUp()
        self.registerSerialNumberButton.addTarget(self, action: #selector(self.saveSerialNumberFunction), for: .touchUpInside)
    }

это функция анимации

    func animateRegisterFormUp() {
        UIView.animate(withDuration: 0.72, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.7, options: .curveEaseInOut, animations: {
            self.registerTitlelabel.transform = .init(translationX: 0, y: -100)
            self.registerdescriptionLabel.transform = .init(translationX: 0, y: -100)
            self.serialnumberInput.transform = .init(translationX: 0, y: -100)
            self.registerSerialNumberButton.transform = .init(translationX: 0, y: -140)
            self.registerSerialNumberButton.backgroundColor = .red
            self.registerSerialNumberButton.addTarget(self, action: #selector(self.saveSerialNumberFunction), for: .touchUpInside)
            self.registerSerialNumberButton.isUserInteractionEnabled = true
        }, completion: nil)
    }

РЕДАКТИРОВАТЬ

Я загружаю кнопку в представление с использованием стека.

            let stackviewButtons = UIStackView(arrangedSubviews: [registerSerialNumberButton, dothislaterButton])
            stackviewButtons.axis = .vertical
            stackviewButtons.alignment = .fill
            stackviewButtons.spacing = 10

            let stackview = UIStackView(arrangedSubviews: [registerTitlelabel, registerdescriptionLabel, serialnumberInput, stackviewButtons])
            stackview.axis = .vertical
            stackview.spacing = 20
            stackview.setCustomSpacing(40, after: registerdescriptionLabel)
            stackview.setCustomSpacing(100, after: serialnumberInput)
            view.addSubview(stackview)
            stackview.anchor(top: nil, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 0, paddingLeft: 20, paddingBottom: 0, paddingRight: 20, width: 0, height: 0)
            stackview.centerXInSuperview()
            stackview.centerYInSuperview()
...