我想这样做:
UIView <UITextFieldDelegate>*
很快。
使子类化 UIView 的对象也符合 UITextFieldDelegate协议(protocol)。
请您参考如下方法:
可以表达(id <UITextFieldDelegate, UIScrollViewDelegate>)使用 Protocol Composition
但不是。(UIView<UITextFieldDelegate> *) .除了类定义
// Obj-C
- (void)methodName:(id <UITextFieldDelegate, UIScrollViewDelegate>)arg { ... }
// Swift
func methodName(arg:protocol<UITextFieldDelegate, UIScrollViewDelegate>!) { ... }
实际上,一个 Obj-C 方法声明为 - (void)methodName((UIView<UITextFieldDelegate> *))arg; ,当它桥接到 Swift 时,你可以用任何 UIView 调用实例。
编辑:
经过一些研究,您似乎可以声明您的 func像这样
func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... }
