Всем привет! Написал свой класс для Button с наследованием от UIButton. Создал кнопку в storyboard и прикрепил ее к своему классу. Хотел ей добавить addTarget, но он не работает, то есть ошибки нет, но нужную мне функцию кнопка не вызывает. Еще я переопределил конструктор, чтобы можно было при создании задать цвет и заголовок, но он тоже не работает(берутся значения из storyboard). Что я сделал не так? Заранее спасибо
Код кнопки:
import UIKit
class SignInButton : UIButton {
var color: UIColor = .black
let touchDownAlpha: CGFloat = 0.3
weak var timer : Timer?
let timerStep: TimeInterval = 0.01
@objc let animateTime: TimeInterval = 0.4
override var isHighlighted: Bool {
didSet {
if isHighlighted {
touchDown()
} else {
cancelTracking(with: nil)
touchUp()
}
}
}
lazy var alphaStep: CGFloat = {
return (1 - touchDownAlpha) / CGFloat(animateTime / timerStep)
}()
convenience init(color: UIColor? = nil, title: String? = nil) {
self.init(type: .custom)
if let color = color {
self.color = color
}
if let title = title {
setTitle(title, for: .normal)
}
setup()
}
//Button settings
func setup() {
backgroundColor = .clear
layer.backgroundColor = color.cgColor
layer.cornerRadius = 16
clipsToBounds = true
}
override func awakeFromNib() {
super.awakeFromNib()
if let backgroundColor = backgroundColor {
color = backgroundColor
}
setup()
}
func stopTimer() {
timer?.invalidate()
}
func touchUp() {
timer = Timer.scheduledTimer(timeInterval: timerStep, target: self, selector: #selector(animation), userInfo: nil, repeats: true)
}
@objc func animation() {
guard let backgroundAlpha = layer.backgroundColor?.alpha else {
stopTimer()
return
}
let newAlpha = backgroundAlpha + alphaStep
if newAlpha < 1 {
layer.backgroundColor = color.withAlphaComponent(newAlpha).cgColor
} else {
layer.backgroundColor = color.cgColor
stopTimer()
}
}
func touchDown() {
stopTimer()
layer.backgroundColor = color.withAlphaComponent(touchDownAlpha).cgColor
}
deinit {
stopTimer()
}
}
Код в viewController
let signInButton = SignInButton(color: UIColor(red:0.00, green:0.87, blue:0.88, alpha:1.0), title: "Вход")
signInButton.addTarget( self , action: #selector (authorizationCheck), for: .touchUpInside)