Ho esteso UIView di conformarsi UIGestureRecognizerDelegate protocolloSwift UIView generico sottoclasse con emissione protocollo
Il codice di seguito viene compilato
let label = UILabel()
let recognizer = UITapGestureRecognizer(target: label.self, action: Selector("tapGestureHandler:"))
recognizer.delegate = label.self
label.addGestureRecognizer(recognizer)
Ora sto cercando di creare una sottoclasse generico per creare UIView diverso sottoclasse
class MyView<T:UIView> {
init() {
(T.self as T.Type).init(frame: CGRectZero)
}
func addGestureToView() {
let recognizer = UITapGestureRecognizer(target: T.self, action: Selector("tapGestureHandler:"))
// The below two lines produces syntax error
recognizer.delegate = T.self // does not conform to protocol 'UIGestureRecognizerDelegate'
T.addGestureRecognizer(recognizer) // UITapGestureRecognizer cannot convertible to UIView
}
}
La cosa strana per me è, T.addGestureRecognizer aspetta UIView piuttosto che UIGestureRecognizer
Aggiornamento:
voglio il tipo di ritorno di MyView essere sottoclasse di UIView,
let view = MyView<UIView>()
// voglio usare in questo modo
view.tintColor = UIColor.redColor() // I can't
// Ma, devo usare questo modo
view.subview.tintColor = UIColor.redColor()
Si prega di verificare i miei commenti aggiornamento, Nel caso in cui, se questo è l'unico modo in cui posso fare quello che mi serviva, io accetto questo come risposta – RK1979
(http://stackoverflow.com/questions/28262520/can- i-use-swift-generic-in-questo-caso) questo è ciò che in realtà voleva risolvere – RK1979