【发布时间】:2014-09-24 05:19:36
【问题描述】:
我想这样做:
UIView <UITextFieldDelegate>*
很快。
使 UIView 子类的对象也符合UITextFieldDelegate 协议。
【问题讨论】:
标签: ios objective-c swift protocols
我想这样做:
UIView <UITextFieldDelegate>*
很快。
使 UIView 子类的对象也符合UITextFieldDelegate 协议。
【问题讨论】:
标签: ios objective-c swift protocols
您可以使用Protocol Composition 表达(id <UITextFieldDelegate, UIScrollViewDelegate>)但不能使用。(UIView<UITextFieldDelegate> *)。除了类定义
// Obj-C
- (void)methodName:(id <UITextFieldDelegate, UIScrollViewDelegate>)arg { ... }
// Swift
func methodName(arg:protocol<UITextFieldDelegate, UIScrollViewDelegate>!) { ... }
实际上,声明为- (void)methodName((UIView<UITextFieldDelegate> *))arg; 的Obj-C 方法,当它桥接到Swift 时,您可以使用任何UIView 实例调用。
编辑:
经过一番研究,您似乎可以像这样声明您的func
func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... }
【讨论】:
制作UIView的子类,让SubClassedView符合UITextFieldDelegate
传统方式
@interface SubClassedView:UIView <UITextFieldDelegate>
@end
迅速
class SubClassedView:UIView, UITextFieldDelegate {
}
【讨论】: