Ich mag UITapGestureRecognizer
als TapRecognizer
so dass die Navigation zwischen den Seiten innerhalb meines app Unterklasse wird in standardisierter Weise behandelt:Subclassing UITapGestureRecognizer in Swift
- ein
UITapGestureRecognizer
auf alle Navigationselemente im Storyboard Schleppen, ihre Klasse Einstellung alsTapRecognizer
, und sie innerhalb des View-Controller-Referenzierung als IBOutlet (@IBOutlet var heroTapRecognizer: TapRecognizer!
) Initialisiere sie etwa so:
self.heroTapRecognizer = TapRecognizer.init(pageId: 1, pageType: PageType.CategoryPage)
Dann in 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")
}
}
}
Aber die oben nicht funktioniert. Ich bin neu bei Swift und habe zuvor nur UITapGestureRecognizer
programmgesteuert verwendet.
Hinweis: Die Benutzerinteraktion ist aktiviert auf der UIView
, der der Erkenner zugeordnet ist.
@TroyT Ich kann nur mit 'init (target: action:)' initialisieren und da self zu diesem Zeitpunkt nicht initialisiert wird, kann ich die Zieleigenschaft nicht entsprechend setzen –