Изучение различных методов обработки события TouchUpInside в Swift 5

В этой статье блога мы углубимся в мир Swift 5 и рассмотрим различные методы обработки события TouchUpInside. Событие TouchUpInside запускается, когда пользователь нажимает внутри представления, и мы обсудим несколько подходов к реализации этого события с примерами кода. К концу этой статьи вы получите полное представление о доступных методах обработки событий TouchUpInside в Swift 5.

Методы обработки события TouchUpInside:

  1. Метод с использованием функции UIControl addTarget(_:action:for:):

    button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
    @objc func buttonTapped(_ sender: UIButton) {
       // Handle button tap event
    }
  2. Метод с использованием функции addTarget(_:action:for:) UIButton:

    button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
    @objc func buttonTapped(_ sender: UIButton) {
       // Handle button tap event
    }
  3. Метод с использованием UITapGestureRecouncer:

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(viewTapped(_:)))
    view.addGestureRecognizer(tapGesture)
    @objc func viewTapped(_ sender: UITapGestureRecognizer) {
       // Handle view tap event
    }
  4. Метод, использующий действие, основанное на закрытии UIButton:

    button.addAction(for: .touchUpInside) {
       // Handle button tap event
    }
  5. Метод с использованием шаблона целевого действия:

    class ButtonTarget: NSObject {
       @objc func buttonTapped(_ sender: UIButton) {
           // Handle button tap event
       }
    }
    let buttonTarget = ButtonTarget()
    button.addTarget(buttonTarget, action: #selector(buttonTarget.buttonTapped(_:)), for: .touchUpInside)
  6. Метод с использованием шаблона делегата:

    protocol ButtonDelegate: AnyObject {
       func buttonTapped()
    }
    class Button: UIButton {
       weak var delegate: ButtonDelegate?
       override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
           super.touchesEnded(touches, with: event)
           delegate?.buttonTapped()
       }
    }
    class ViewController: UIViewController, ButtonDelegate {
       func buttonTapped() {
           // Handle button tap event
       }
    }
  7. Метод, использующий событие PrimaryActionTriggered UIControl:

    button.isPrimaryActionEnabled = true
    button.addTarget(self, action: #selector(buttonTapped(_:)), for: .primaryActionTriggered)
    @objc func buttonTapped(_ sender: UIButton) {
       // Handle button tap event
    }