我对Swift比较陌生。
我有很多图像(尽管现在我正在测试四个图像),这些图像正试图隐藏(暂时以确保基本代码正常工作,而我真的想在点击的图像下方插入一个图像)点击。
我已经创建了array
中的ImageViews
,一旦有了有效的代码,我打算对其进行扩展。我尝试使用UITapGestureRecognizers
中的for循环将ImageView
添加到每个addGestures()
中,然后让selectImage()
隐藏被点击的ImageView
。代码编译没有错误,但是当点击其中一个图像时,失败并显示uncaught NSException
。关于如何有效执行此操作的任何技巧,而无需为每个图像进行过多的手动编码?
答案 0 :(得分:0)
请检查以下代码
func addGestureRecognizer(){
for imageView in imageArray{
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
imageView.addGestureRecognizer(tap)
}
}
@objc func handleTap(gesture:UITapGestureRecognizer){
let imageView = gesture.view
imageView?.isHidden = true
}
在您的代码中,您传递的是ImageView而不是选择器上的手势。不过,您可以通过gesture.view获取imageView。
也不需要启用userInteraction的单独功能。
答案 1 :(得分:0)
您可以尝试
class GestureStackVC: UIViewController {
/// Image Outlets
@IBOutlet weak var img1: UIImageView!
@IBOutlet weak var img2: UIImageView!
@IBOutlet weak var img3: UIImageView!
/// ImageView Array
var imagesArray : [UIImageView]?
/// Image Gesture
var imageTapGesture : UITapGestureRecognizer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
/// Allocate Array
imagesArray = [UIImageView]()
/// Add Required Values
imagesArray = [img1,img2,img3]
/// Add gesture
for imageView in imagesArray!{
let tap = UITapGestureRecognizer(target: self, action: #selector(imageTapHandler(_:)))
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(tap)
}
}
/// tap Handler
@objc func imageTapHandler(_ sender: UITapGestureRecognizer) {
/// Hide the Sender View
sender.view?.isHidden = true
/// Done
}
}
具有3张图像的第一输出