2014-09-24 3 views

ответ

1

Вы можете выразить (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 инстанции.

enter image description here

EDIT:

После небольшого исследования, кажется, вы можете объявить func как это

func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... } 
1

Сделать суб класс UIView и пусть SubClassedView соответствует UITextFieldDelegate

традиционным способом

@interface SubClassedView:UIView <UITextFieldDelegate> 

@end 

в быстрой

class SubClassedView:UIView, UITextFieldDelegate { 

} 
Смежные вопросы