我想将UITapGestureRecognizer
作为TapRecognizer
的子类,以便我的应用中的页面之间的导航以标准化方式处理:
UITapGestureRecognizer
拖到故事板中的任何导航元素上,将其类设置为TapRecognizer
,并在视图控制器中将其作为IBOutlet引用(@IBOutlet var heroTapRecognizer: TapRecognizer!
)像这样初始化它们:
self.heroTapRecognizer = TapRecognizer.init(pageId: 1, pageType: PageType.CategoryPage)
然后在 TapRecognizer.swift :
class TapRecognizer: UITapGestureRecognizer {
var pageId:Int!
var pageType:PageType!
convenience init(pageId: Int, pageType: PageType) {
self.init()
self.pageId = pageId
self.pageType = pageType
self.addTarget(self, action: #selector(TapRecognizer.handleTap(_:)))
}
func handleTap(sender: UITapGestureRecognizer) {
if sender.state == .Ended {
print("Handle navigation based on pageId + pageType")
}
}
}
但上述情况并未奏效。我是Swift的新手,之前只是以编程方式使用UITapGestureRecognizer
。
注意:与识别器相关联的UIView
上启用了用户互动 。
答案 0 :(得分:1)
将UITapGestureRecognizer拖到故事板中的任何导航元素上,将其类设置为TapRecognizer,并在View Controller中将它们作为IBOutlet引用
好的,但是你的init
永远不会被调用。如果您想要发生特殊情况,请实施awakeFromNib
。
或者,实施init(coder:)
。由于某种原因,这没有记录,但它是实际调用的初始化程序。