Я посмотрел на другие ответы на аналогичный вопрос и следовал приведенному там совету, но здесь я не получаю ошибок, но целевая функция никогда не запускается.
У меня есть этот подкласс UIButton
class RoundedButton: UIButton {
var buttonColour: UIColor = UIColor.red
var height: CGFloat = 0
var width: CGFloat = 0
var text: String = ""
var x: CGFloat = 0
var y: CGFloat = 0
required init?(coder: NSCoder) {
super.init(coder: coder)
}
init(frame: CGRect, colour: UIColor, height: CGFloat, text: String, width: CGFloat, x: CGFloat, y: CGFloat) {
super.init(frame: frame)
self.buttonColour = colour
self.height = height
self.text = text
self.width = width
self.x = x
self.y = y
setUpView()
}
func setUpView() {
let roundedButton = UIButton(frame: CGRect(x: x, y: y, width: width, height: height))
roundedButton.backgroundColor = buttonColour
roundedButton.setTitle(text, for: .normal)
roundedButton.setTitleColor(UIColor.white, for: .normal)
roundedButton.layer.cornerRadius = 4
roundedButton.addTarget(self, action: #selector(self.wasPressed(_:)), for: .touchUpInside)
self.addSubview(roundedButton)
}
@objc func wasPressed(_ sender: UIButton) {
print("was pressed")
}
}
И я называю это так:
let addReview = RoundedButton(frame: CGRect(), colour: #colorLiteral(red: 0.9921568627, green: 0.6941176471, blue: 0.2, alpha: 1), height: 48, text: "Review", width: UIScreen.main.bounds.width - 16, x: 8, y: UIScreen.main.bounds.maxY - 56)
self.view.addSubview(addReview)
Однако функция wasPressed (_ sender: UIButton) никогда не печатает "нажато". Кто-нибудь знает, почему это может быть?
Также возможно добавить цель так, чтобы она вызывала «динамическую» цель в суперклассе.
Например, я могу каждый раз отправлять подклассу другую цель.
Это сделано для того, чтобы я мог использовать этот класс RoundedButton для создания нескольких кнопок.