Я создал собственный класс UIButton
следующим образом:
class CustomButton: UIButton
{
required init(frame: CGRect, title: String, alignment: NSTextAlignment)
{
super.init(frame: frame)
// Set properties
// self.addTarget(self,
// action: #selector(touchCancel),
// for: .touchUpInside)
}
required init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
// @objc fileprivate func touchCancel()
// {
// print("TOUCHED")
// }
}
В моем основном UIViewController
есть следующая реализация:
class MainViewController: UIViewController
{
fileprivate var customBtn: CustomButton {
let frame = CGRect(x: 48.0,
y: 177.0,
width: 80.0,
height: 40.0)
let custom = CustomButton(frame: frame,
title: "Test",
alignment: NSTextAlignment.right)
return custom
}
override func viewDidLoad()
{
super.viewDidLoad()
view.addSubView(customBtn)
customBtn.addTarget(self,
action: #selector(touchCancel),
for: .touchUpInside)
}
@objc public func touchCancel()
{
print("TOUCHED")
}
}
Однако, добавление цели к customBtn
в моем основном UIViewController
не срабатывает. Как показано в классе CustomButton
с закомментированным кодом, я могу добавить туда цель, которая вызывает срабатывание.
Мне просто интересно, почему определенную функцию в другом классе нельзя использовать для добавления в качестве цели в пользовательский UIButton
? .... или, возможно, моя реализация неверна?
Спасибо!