Изменение цвета фона UIView при нажатии с помощью жеста касания (iOS) - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу изменить цвет UIView при его нажатии и изменить его на исходный цвет после события касания

Я уже реализовал эти 2 метода, но их поведение не дает требуемых результатов

     override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        backgroundColor = UIColor.white
    }


    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        backgroundColor = UIColor.gray
    }

Эти 2 метода работают, но после нажатия на кнопку UIView в течение 2 секунд, он работает.Более того, он не меняет цвет UIView обратно на белый после нажатия на него (короче говоря, он остается серым до тех пор, пока я не перезапущу приложение) Я использую жесты касания на UIView

1 Ответ

1 голос
/ 16 апреля 2019

Вместо переопределения touchesBegan и touchesEnded методов, вы можете добавить свой собственный распознаватель жестов.Вдохновленный этим ответом , вы можете сделать что-то вроде:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .gray
        setupTap()
    }

    func setupTap() {
        let touchDown = UILongPressGestureRecognizer(target:self, action: #selector(didTouchDown))
        touchDown.minimumPressDuration = 0
        view.addGestureRecognizer(touchDown)
    }

    @objc func didTouchDown(gesture: UILongPressGestureRecognizer) {
        if gesture.state == .began {
            view.backgroundColor = .white
        } else if gesture.state == .ended || gesture.state == .cancelled {
            view.backgroundColor = .gray
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...