swift 多个视图以点击数组中的手势
swift multiple views to tap gestures in array
我有一个图像滑块,可以将多个图像添加到滚动视图。每个都存储在我的自定义数据类型(名为 Slide)的数组中。我像这样循环浏览它们:
for (index, slide) in slides.enumerated() {
let imageView = UIImageView()
imageView.image = UIImage(named: slide.image) //set the imageView with the imageName in this slide
imageView.contentMode = .scaleAspectFit
let xPos = self.view.frame.width * CGFloat(index) //calculate x depending upon slide index
imageView.frame = CGRect(x: xPos, y: -200, width: self.SVSlider.frame.width, height: self.SVSlider.frame.height)
SVSlider.contentSize.width = SVSlider.frame.width * CGFloat(index + 1) //add slide image to scrollview
SVSlider.addSubview(imageView)
//add tap function to slide
imageView.isUserInteractionEnabled = true
imageView.tag = index
let tapImage = UITapGestureRecognizer(target: self, action: #selector(slideAction(_:)))
imageView.addGestureRecognizer(tapImage)
}
每张幻灯片图片都附在方法"slideAction"下面:
@objc func slideAction(_ sender: UITapGestureRecognizer) {
let selName = slides[(sender.view?.tag)!].target
NSObject.perform(Selector(selName))
}
但是当我单击图像时应用程序抛出错误。通过调试,我可以看到 "tag" 已正确设置为幻灯片索引号。我想执行幻灯片对象中保存的目标操作。 (当前目标是方法名称的字符串 - 以“:”结尾)。
如何让 "slideAction" 转到幻灯片对象中的方法?
试试这个,在自定义 class callMethodDirectly
中创建目标方法并调用它
@objc func slideAction(_ sender: UITapGestureRecognizer) {
let selName = slides[(sender.view?.tag)!]
selName.callMethodDirectly()
}
class slide:NSObjcet
{
func callMethodDirectly()
{
// implement target code here
}
}
我有一个图像滑块,可以将多个图像添加到滚动视图。每个都存储在我的自定义数据类型(名为 Slide)的数组中。我像这样循环浏览它们:
for (index, slide) in slides.enumerated() {
let imageView = UIImageView()
imageView.image = UIImage(named: slide.image) //set the imageView with the imageName in this slide
imageView.contentMode = .scaleAspectFit
let xPos = self.view.frame.width * CGFloat(index) //calculate x depending upon slide index
imageView.frame = CGRect(x: xPos, y: -200, width: self.SVSlider.frame.width, height: self.SVSlider.frame.height)
SVSlider.contentSize.width = SVSlider.frame.width * CGFloat(index + 1) //add slide image to scrollview
SVSlider.addSubview(imageView)
//add tap function to slide
imageView.isUserInteractionEnabled = true
imageView.tag = index
let tapImage = UITapGestureRecognizer(target: self, action: #selector(slideAction(_:)))
imageView.addGestureRecognizer(tapImage)
}
每张幻灯片图片都附在方法"slideAction"下面:
@objc func slideAction(_ sender: UITapGestureRecognizer) {
let selName = slides[(sender.view?.tag)!].target
NSObject.perform(Selector(selName))
}
但是当我单击图像时应用程序抛出错误。通过调试,我可以看到 "tag" 已正确设置为幻灯片索引号。我想执行幻灯片对象中保存的目标操作。 (当前目标是方法名称的字符串 - 以“:”结尾)。
如何让 "slideAction" 转到幻灯片对象中的方法?
试试这个,在自定义 class callMethodDirectly
中创建目标方法并调用它
@objc func slideAction(_ sender: UITapGestureRecognizer) {
let selName = slides[(sender.view?.tag)!]
selName.callMethodDirectly()
}
class slide:NSObjcet
{
func callMethodDirectly()
{
// implement target code here
}
}