Как добавить событие в подкласс UIImageView, как это было бы в IB - PullRequest
0 голосов
/ 05 декабря 2018

Я устал от того, что изображение UIButton слишком сложно для настройки.И долго создавать Tappable UIImageView.Чем я хочу создать собственный смешанный элемент UIImage и UIButton.Это позволило бы создавать собственную анимацию, сенсорные области и многое другое.

Я решил взять UIImageView и добавить к нему жест или кнопку для обнаружения касаний.Но мне нужно иметь TouchUpInside или просто прикоснуться к событию, чтобы легко подключить его в IB.Посмотрите на код, что уже написано:

class ClickableImageView: UIImageView {
    let embeddedButton = UIButton()

    override func awakeFromNib() {
        super.awakeFromNib()
        setup()
    }

    fileprivate func setup() {
        isUserInteractionEnabled = true
        sv(embeddedButton)
        embeddedButton.fillContainer()
        embeddedButton.addTarget(self, action: #selector(didPress), for: .touchUpInside)
    }

    @objc fileprivate func didPress() {
        embeddedButton.preventRepeatedPresses()


    }
}

enter image description here

Я сделал то же самое с подклассом UIButton, и он работает, но он не показываетИзображение в IB, так что это смущает разработчика.

Последняя проблема, которую нужно решить, - это как добавить событие?

1 Ответ

0 голосов
/ 05 декабря 2018

Изображение UIButton можно легко изменить, указав расстояние (сверху, слева, снизу и справа) от кнопки UIB, как показано ниже.

yourButton.imageEdgeInsets = UIEdgeInsetsMake(10, 50, 10, 95)

Если вы хотите добавить событие в UIImageView, сделайтеследующее,

yourImage.isUserInteractionEnabled = true
let tapImage = UITapGestureRecognizer(target: self, action: #selector(myFunction(tapGestureRecognizer:)))
yourImage.addGestureRecognizer(tapImage)

Затем обработайте ваш метод,

@objc func myFunction(tapGestureRecognizer: UITapGestureRecognizer) {
//do something here
}
...