当我尝试在子视图中使用UIGestureRecognizer时,它的帧在superviewcontroller中通过Autolayout指示,它不会响应手势。我相信这是因为手势识别器不知道视图的真实尺寸,如Autolayout约束所描述的那样。怎么解决这个问题?这是我的代码:
resize(100, 100)
提前致谢。
答案 0 :(得分:1)
您的方法存在两个问题(自动布局不是问题):
userInteractionEnabled = true
班级MyLabel
delegate
不是nil。您可以通过添加将委托作为参数以下是如何使其工作(无需保持对手势识别器的引用):
class MyLabel: UILabel {
var delegate: MyProtocolForSwipeRecognition
init(withDelegate delegate: MyProtocolForSwipeRecognition) {
self.delegate = delegate
let gestureRecognizer = UISwipeGestureRecognizer(target: delegate, action: "swiped")
super.init(frame: CGRectZero)
addGestureRecognizer(gestureRecognizer)
userInteractionEnabled = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
然后,您可以在实现协议的类中初始化您的标签:
let label = MyLabel(withDelegate: self)