【发布时间】:2016-11-23 11:01:19
【问题描述】:
我有一个继承自 UIView 的自定义类。在这个类中,我向它添加了一个手势识别器
//CustomParentView.swift
class CustomParentView: UIView, UIGestureRecognizerDelegate {
override init(frame: CGRect) {
super.init(frame: frame)
setupGestureRecognizer()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func setupGestureRecognizer() {
let tap = UITapGestureRecognizer(target: self, action: #selector(CustomParentView.viewTapped(sender:)))
tap.delegate = self
self.addGestureRecognizer(tap)
}
func viewTapped(sender: UITapGestureRecognizer) {
print("View tapped")
}
}
然后我有另一个继承自CustomParentView的类,我最终会有几个继承自它的UIView,但是手势识别器的委托没有设置为CustomParentView,它设置为继承它的视图。这意味着我需要将 viewTapped 函数移动到每个 CustomParentView 的子类中,并在每个类中重复此函数。
所以我的问题是如何将手势识别器的委托设置为 CustomParentView 并使其保持 CustomParentView
【问题讨论】:
-
好吧,一旦您创建了子实例,其父类中的所有成员都将成为子类的成员。就像
backgroundColor是UIView成员一样,但您可以在UIImageView、UITableView等中设置它。它将表现为孩子的backgroundColor。那你想做什么? -
解雇父类中的父类。它的孩子会自动关闭。
-
我不知道
dismiss到底是什么意思,但请在viewTapped()函数self.removeFromSuperview中尝试这一行。
标签: swift inheritance uiview