【发布时间】:2016-07-25 23:56:32
【问题描述】:
当我的代码被分成类时,我无法让我的点击手势工作。我之前将所有这些都包含在一个文件中,并且运行顺利,所以我认为我在以下代码中做错了:
placeContainerView.userInteractionEnabled = true
let showFullPlaceContainerView = UITapGestureRecognizer(target: self, action: Selector(self.showFullPlaceContainerViewFunction(placeContainerView)))
placeContainerView.addGestureRecognizer(showFullPlaceContainerView)
函数showFullContainerViewFunction(placeContainerView)在哪里
func showFullPlaceContainerViewFunction(placeContainerView: PlaceContainerView) {
placeContainerView.animateExpandContractContainer()
}
和
func animateExpandContractContainer() {
print("Tap gesture working")
if self.displayingPlaceLabel == false {
print(self.displayingPlaceLabel)
self.displayingPlaceLabel = true
UIView.animateWithDuration(0.4, delay: 0.0, options: [], animations: {
self.center.x += 180
}, completion: nil)
} else {
self.displayingPlaceLabel = false
UIView.animateWithDuration(0.4, delay: 0.0, options: [], animations: {
self.center.x -= 180
}, completion: nil)
}
}
placeContainerView 不知何故无法识别点击,并且在单击时不返回任何打印语句。
有什么想法吗?感谢您的帮助!
【问题讨论】:
-
我不确定如何,但选择器
#selector(className.methodName)不应该有任何参数。所以stackoverflow.com/questions/32085396/…有问题 -
我认为你的选择器是错误的。它应该是 '#selector(Classname.showFullPlaceContainerViewFunction(_:))' 而不是 'Selector(self.showFullPlaceContainerViewFunction(placeContainerView))'
-
@RJE 正如你所说,我已经替换了它并且代码没有给出任何错误,但是当我运行它并尝试点击“placeContainerView”时,我在调用 animateExpandContractContainer 时收到错误 - 线程1:EXC_BAD_ACCESS
-
@impression7vx 你是对的。我更改了选择器以匹配 RJE 所写的内容,以便通过 placeContainerView
-
mm,我刚刚注意到方法参数不是 UIGestureRecognizer。点击手势将通过 UITapGestureRecogninser(我们无法更改此行为)。您必须使用识别器找到您的“PlaceContainerView”或保留全局参考。例如。 'func showFullPlaceContainerViewFunction(recognizer: UITapGestureRecognizer)'
标签: ios swift uigesturerecognizer