В этой статье блога мы углубимся в мир Swift 5 и рассмотрим различные методы обработки события TouchUpInside. Событие TouchUpInside запускается, когда пользователь нажимает внутри представления, и мы обсудим несколько подходов к реализации этого события с примерами кода. К концу этой статьи вы получите полное представление о доступных методах обработки событий TouchUpInside в Swift 5.
Методы обработки события TouchUpInside:
-
Метод с использованием функции UIControl addTarget(_:action:for:):
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside) @objc func buttonTapped(_ sender: UIButton) { // Handle button tap event } -
Метод с использованием функции addTarget(_:action:for:) UIButton:
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside) @objc func buttonTapped(_ sender: UIButton) { // Handle button tap event } -
Метод с использованием UITapGestureRecouncer:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(viewTapped(_:))) view.addGestureRecognizer(tapGesture) @objc func viewTapped(_ sender: UITapGestureRecognizer) { // Handle view tap event } -
Метод, использующий действие, основанное на закрытии UIButton:
button.addAction(for: .touchUpInside) { // Handle button tap event } -
Метод с использованием шаблона целевого действия:
class ButtonTarget: NSObject { @objc func buttonTapped(_ sender: UIButton) { // Handle button tap event } } let buttonTarget = ButtonTarget() button.addTarget(buttonTarget, action: #selector(buttonTarget.buttonTapped(_:)), for: .touchUpInside) -
Метод с использованием шаблона делегата:
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 } } -
Метод, использующий событие PrimaryActionTriggered UIControl:
button.isPrimaryActionEnabled = true button.addTarget(self, action: #selector(buttonTapped(_:)), for: .primaryActionTriggered) @objc func buttonTapped(_ sender: UIButton) { // Handle button tap event }