我想这样做:
UIView <UITextFieldDelegate>*
在swift。
使子类UIView的对象也符合UITextFieldDelegate
协议。
答案 0 :(得分:2)
您可以使用Protocol Composition来表达(id <UITextFieldDelegate, UIScrollViewDelegate>)
但不是。(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) { ... }
答案 1 :(得分:1)
创建UIView
的子类,让SubClassedView符合UITextFieldDelegate
以传统方式
@interface SubClassedView:UIView <UITextFieldDelegate>
@end
in swift
class SubClassedView:UIView, UITextFieldDelegate {
}