如何在UIView中为UIImageView添加tapGesture

时间:2017-09-26 08:27:00

标签: ios swift gesture

我在UIView中为UIImageView添加了tap手势识别器。我确实为UIImageView和UIView设置了isUserInteractionEnabled = true。但它仍然无法正常工作。

@IBOutlet weak var adView: UIView!<br>
@IBOutlet weak var defaultBannerView: UIImageView!
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(FavouritesVC.tappedImageBanner(_:)))

defaultBannerView.addGestureRecognizer(tapGesture)defaultBannerView.isUserInteractionEnabled = true      adView.isUserInteractionEnabled = true

 func tappedImageBanner(_ sender: UIGestureRecognizer){
    print("Tapped")
    let tappedImageView = sender.view!
    let imageView = tappedImageView as! UIImageView
    print(imageView) }

编辑:

我添加了adView.addGestureRecognizer(tapGesture),但错误是&#39;无法转换类型&#39; UIView&#39;到&#39; UIImageView&#39;&#39;

实际上我正在做admob,我想在我无法通过google admob请求横幅时放置我的默认横幅。所以我希望用户能够点击我的默认横幅并直接进入网站。那么我应该在adView中添加tapGesture并在我从谷歌获取广告时隐藏imageView吗?

如果我想在UIImageView中添加手势怎么办?我应该怎么做?

2 个答案:

答案 0 :(得分:2)

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)

func imageTapped(tapGestureRecognizer: UITapGestureRecognizer){

    let tappedImage = tapGestureRecognizer.view as! UIImageView

    // Your action 
}

答案 1 :(得分:0)

  

我在UIView中为UIImageView添加了tap手势识别器。 (...)但它仍然无效。

这是什么意思:不工作?我可以假设没有检测到水龙头。

  

我添加了adView.addGestureRecognizer(tapGesture),但错误是'无法将类型'UIView'的值转换为'UIImageView''

错误发生时?我认为它是在点击adView时出现的,因为你的sender.view!不是UIImageView(如果手势识别器链接到UIView)。

  

当我无法从google admob请求横幅时,我想放置我的默认横幅。 (...)那么我应该在adView中添加tapGesture并在我从谷歌获取广告时隐藏imageView吗?如果我想在UIImageView中添加手势怎么办?

你有没有考虑在上面添加UIImageView UIView并将其alpha更改为0或在加载Banner时隐藏它 - 它会阻止使用tapView?

  

其实我在做admob(...)我添加了一个名为adView(...)的自定义UIView,它不允许我触摸defaultBannerView

正如您所说,您正在将imageView添加到自定义视图中,而您不知道它是如何工作的。想想你是否真的需要干涉它的逻辑。