TapGestureRecognizer这是用于初始化的图像视图与点击手势识别器的代码。
var drawerImageView :UIImageView = {
var drawerImageView = UIImageView()
drawerImageView.image = UIImage(systemName: "list.dash")
let tap = UITapGestureRecognizer(target: HomeViewController.self, action: #selector(tapFunction(sender:)))
tap.numberOfTapsRequired = 1
tap.numberOfTouchesRequired = 1
drawerImageView.addGestureRecognizer(tap)
drawerImageView.isUserInteractionEnabled = true
return drawerImageView
}()
下面我将为图像视图设置约束。
drawerImageView.translatesAutoresizingMaskIntoConstraints = false
drawerImageView.leadingAnchor.constraint(equalTo: view.leadingAnchor,constant: 30).isActive = true
drawerImageView.topAnchor.constraint(equalTo: view.topAnchor,constant: 40).isActive = true
drawerImageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
drawerImageView.heightAnchor.constraint(equalToConstant: 100).isActive = true
问题是我不能听水龙头,只有当我设置的宽度高度超过200,然后只有我收到水龙头事件。
这是上述点击手势的objc方法,需要调用此方法,但我无法在此处接收控件。@objc func tapFunction(sender:UITapGestureRecognizer){ print(“image tap”)}此问题尚不清楚。
2条答案
按热度按时间csga3l581#
你的问题对我来说有点难注意到。但是我相信你在接收触摸事件方面有问题,如果是这样,问题是这样的。
在计算变量之外编写触摸事件。
如果您想在大小超过200时接收触摸,只需在“tapFunction”中写入一个if,并检查您的图像大小是否超过200。
but5z9lq2#
这不是关于你的图像的大小,你正在实现导航控制器的方式是不好的.它似乎你正在定位你的图像在navigationController顶栏之下这是隐藏的(我只是突出显示了隐藏的部分)。改变你的图像的位置,你会看到你的点击被运行,或者如果你点击你的图像的一部分,这不是背后的topper,你的触摸再次工作.所以这部分你的图像是位于导航栏后面所以触摸将不再响应它.我看到你的代码导航,这是不适当的.
此外,如果您让rootViewcontroller直接加载HomeViewcontroller,您将看到代码工作正常,因为navigationController不会中断触摸事件。