未调用子视图手势识别器
Subview Gesture Recognizer not being called
我在让自定义 UIView.to 中的 UITapGestureRecognizer 正常工作时遇到问题。我创建了一个视图:CategoryViewButton,它在初始化中添加了一个 UITapGestureRecognizer:
class CategoryViewButton: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))
self.addGestureRecognizer(tapGesture)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func handleTap() {
print("Hello again")
}
}
当直接添加到视图控制器中时,此手势识别器可以正常工作。但是,当我将 CategoryViewButton 添加为另一个自定义视图的子视图时,不会调用手势识别器方法。我的子视图:
class CategoryView: UIView, CategoryButtonDelegate {
var button : CategoryViewButton?
override init(frame: CGRect) {
super.init(frame: frame)
button = CategoryViewButton(frame: CGRect(x: 10, y: 0, width: 40, height: 25))
self.addSubview(button!)
self.bringSubview(toFront: button!)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
当我在视图控制器中创建类别视图时,没有调用 handleTap() 函数。我错过了什么?
对于任何好奇的人,问题是带有手势识别器的子视图在父视图的框架之外。这意味着即使正在绘制视图,也未检测到手势
我在让自定义 UIView.to 中的 UITapGestureRecognizer 正常工作时遇到问题。我创建了一个视图:CategoryViewButton,它在初始化中添加了一个 UITapGestureRecognizer:
class CategoryViewButton: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))
self.addGestureRecognizer(tapGesture)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func handleTap() {
print("Hello again")
}
}
当直接添加到视图控制器中时,此手势识别器可以正常工作。但是,当我将 CategoryViewButton 添加为另一个自定义视图的子视图时,不会调用手势识别器方法。我的子视图:
class CategoryView: UIView, CategoryButtonDelegate {
var button : CategoryViewButton?
override init(frame: CGRect) {
super.init(frame: frame)
button = CategoryViewButton(frame: CGRect(x: 10, y: 0, width: 40, height: 25))
self.addSubview(button!)
self.bringSubview(toFront: button!)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
当我在视图控制器中创建类别视图时,没有调用 handleTap() 函数。我错过了什么?
对于任何好奇的人,问题是带有手势识别器的子视图在父视图的框架之外。这意味着即使正在绘制视图,也未检测到手势