Я хочу подкласс UITapGestureRecognizer
, как TapRecognizer
так, что навигация между страницами в пределах моего приложения обрабатываются стандартным образом:подклассов UITapGestureRecognizer в Swift
- перетаскиванием
UITapGestureRecognizer
на любые навигационные элементы в раскадровке, устанавливая их класс какTapRecognizer
, и ссылки на них в View Controller как 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
, с которым связан распознаватель.
@TroyT Я могу только инициализировать с помощью 'init (target: action:)', и поскольку self не инициализируется в этот момент, я не могу установить целевое свойство соответственно. –