Здесь есть две проблемы:
isUserInteractionEnabled
по умолчанию false
- вы должны назначить каждому виду изображения отдельный распознаватель жестов
Решение
Вместо установки isUserInteractionEnabled
в true
для каждого вида изображения отдельно, я предлагаю поместить этот код в сам класс Banner
.Поскольку кажется, что вы инициализируете его из раскадровки, использование функции awakeFromNib
должно работать просто отлично:
class Banner: UIView {
@IBOutlet weak var img: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
img.isUserInteractionEnabled = true
}
}
В вашей функции createSlides()
добавьте отдельный жест касания для каждого вида:
let slide1:banner = Bundle.main.loadNibNamed("banner", owner: self, options: nil)?.first as! banner
slide1.img.image = UIImage(named: "bannerex")
slide1.img.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tapped)))
или даже лучше для масштабирования и избыточности без кода:
function tap() -> UITapGestureRecognizer {
return UITapGestureRecognizer(target: self, action: #selector(tapped))
}
let slide1:banner = Bundle.main.loadNibNamed("banner", owner: self, options: nil)?.first as! banner
slide1.img.image = UIImage(named: "bannerex")
slide1.img.addGestureRecognizer(tap())