Swift Generic UIView subclass con problema de protocolo

He extendido UIView para conformar el protocolo UIGestureRecognizerDelegate

El código siguiente comstack

let label = UILabel() let recognizer = UITapGestureRecognizer(target: label.self, action: Selector("tapGestureHandler:")) recognizer.delegate = label.self label.addGestureRecognizer(recognizer) 

Ahora estoy tratando de crear una subclass genérica para crear diferentes subclasss UIView

 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 } } 

Lo extraño para mí es que T.addGestureRecognizer espera UIView en lugar de UIGestureRecognizer

Actualización :

Quiero que el tipo de retorno de MyView sea una subclass de UIView,

 let view = MyView<UIView>() 

// Quiero usarlo de esta manera

 view.tintColor = UIColor.networkingColor() // I can't 

// Pero tengo que usar esta forma

 view.subview.tintColor = UIColor.networkingColor() 

T es el tipo de subview. Debe crear una instancia para llamar a addGestureRecognizer y configurarlo como delegado de un gestor reconocedor.

 class MyView<T:UIView where T: UIGestureRecognizerDelegate> { var subview: T init() { subview = T(frame: CGRectZero) } func addGestureToView() { let recognizer = UITapGestureRecognizer(target: subview, action: Selector("tapGestureHandler:")) recognizer.delegate = subview subview.addGestureRecognizer(recognizer) } } 

Tenga en count que está asumiendo que la class aprobada para crear una instancia MyView tiene un método denominado tapGestureHandler: Probablemente deberías agregar este método a un protocolo y hacer que T ajuste a él.