gpt4 book ai didi

swift UITapGestureRecognizer 无法在 View 上工作

转载 作者:行者123 更新时间:2023-12-01 23:05:43 24 4
gpt4 key购买 nike

我必须创建一个新线程,因为它让我发疯,而且网上的所有其他答案都完全相同。我已经这样做过无数次了,但我看不出我一生中错过了什么。我正在使用“测试” View Controller 只是为了让点击手势正常工作,但它根本不起作用...我相当确定我设置正确,因为这就是我一直在中实现它的方式过去:(是的,我已经选中了 isUserInteractionEnabled 框)。我什至以这种方式在不同的 View Controller 上实现它并且它正在工作......

class TestViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
view.addGestureRecognizer(tap)
}

let tap = UITapGestureRecognizer(target: self, action: #selector(wasTapped))


@objc func wasTapped() {
print("tapped")
}
}

我还尝试将参数添加到 wasTapped:

@objc func wasTapped(gestureRecognizer: UITapGestureRecognizer) {
print("tapped")
}

最佳答案

你是说:

override func viewDidLoad() {
super.viewDidLoad()

view.addGestureRecognizer(tap)
}

let tap = UITapGestureRecognizer(target: self, action: #selector(wasTapped))

问题出在最后一行:

let tap = UITapGestureRecognizer(target: self, action: #selector(wasTapped))

你不能只是在一个偏僻的地方说let tap。您正在隐式创建实例属性。但是您无法使用 self 目标来初始化实例属性,因为在初始化实例属性时 self 并不存在。 (我认为该代码甚至可以编译为错误,并已将其报告为错误。)

将该行移至 viewDidLoad 的开头,如下所示:

override func viewDidLoad() {
super.viewDidLoad()

let tap = UITapGestureRecognizer(target: self, action: #selector(wasTapped))
view.addGestureRecognizer(tap)
}

关于swift UITapGestureRecognizer 无法在 View 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com