【发布时间】:2016-11-23 03:48:00
【问题描述】:
我不知道为什么,但我的 UITapGestureRecognizer 没有正确触发。好吧,事实上它根本没有开火。我试图让一个功能在图像的水龙头上运行。
设置信息:
- 不使用情节提要,以编程方式加载所有内容
- 我正在加载它的视图上也有一个 UICollectionView
好的,代码如下:
UIImageView 是这样声明的:
let backButtonIcon: UIImageView = {
let bbi = UIImageView()
bbi.image = UIImage(named: "backIcon")
bbi.translatesAutoresizingMaskIntoConstraints = false
bbi.layer.zPosition = 2
return bbi
}()
然后我将它添加到视图中:
view.addSubview(backButtonIcon)
将点击功能添加到我正在使用的 UIImageView:
let tapBackButton = UITapGestureRecognizer(target: self, action: #selector(backButtonPressed))
backButtonIcon.isUserInteractionEnabled = true
backButtonIcon.addGestureRecognizer(tapBackButton)
最后,这是我正在尝试运行的函数,目前只是一个简单的打印:
func backButtonPressed(sender: UITapGestureRecognizer) {
print("Go Back Pressed")
}
更新:
我已经尝试添加:
bbi.isUserInteractionEnabled = true
还有:
backButtonIcon.isUserInteractionEnabled = true
更新 2:
我创建了另一个空白视图,并完全按照此处的代码使用了代码,并且成功了。
会不会和 UICollectionView 有关系?
我将 UICollectionView zPosition 设为 -1,将 UIImageView zPosition 设为 1,但这也不起作用。
【问题讨论】:
-
选择器似乎不正确,它至少应该因无法识别的选择器而崩溃。
backButtonIcon的superview到底是什么? -
@Larme nope 没有崩溃。为什么不正确?
-
当我没有维护对添加到的视图的引用(即变量)时,我遇到了手势识别器无法正常工作的问题。这是我的 SO 帖子:stackoverflow.com/questions/40144874/…
-
您在生命周期的哪个阶段添加手势识别器?您添加子视图的顺序是什么?您在哪里/如何设置布局约束?更多上下文可能会有所帮助
-
@Brett 道歉。因此,手势识别器位于 View Did 加载中,而 collectionview 位于 ViewDidAppear 中。我尝试将其中一个添加到另一个,但它仍然没有工作。我是 Swift 编程的新手,因此缺乏上下文,如果你能让我知道该做什么以及如何找出我可以为你获取该信息:)
标签: ios swift uigesturerecognizer